.net 返回前端json数据

1.需求
允许.net后端创建json数据,通过response.write()方式动态的回应ajax请求数据,并通过js动态的刷新到页面上。
2.实现方法
2.1前端ajax对于数据的请求和返回json字符串的处理。

//前台获取后台测评参数信息文件json
function get_data() {
    var type = "Get_Para_Info";
    var year = $('.old_select select').eq(0).find('option:selected').text();
    var season = $('.old_select select').eq(1).find('option:selected').text();
    $.ajax({
        type: 'get',
        url: '../new/ajax/ajaxHander.aspx?type=' + type + '&year=' + year + '&season=' + season,
        eache: false,
        success: function (reg) {
            var jsonobj = eval("{(" + reg + ")}");
            var str;
            for (var i = 0; i < jsonobj.length; i++) {
            str += "<tr class=\"add_row\">";
            str += "<td class=\"td1\">" + jsonobj[i].TCK_CATE + "</td>";
            str += "<td class=\"td1\">" + jsonobj[i].WEIGHT + "</td>";
            str += "<td class='del'>" + "</td>";
            str += "</tr>";
            }
            $('.box1 table tbody').append(str);
        },
        error: function () {
            alert("未能查找到数据");
                }
            })
        }

2.2后端构建json字符串

//获取ajax操作类型信息
_type = q("type");
Get_Para_Info();
/// <summary>
/// 返回前端json数据
/// </summary>
public void Get_Para_Info()
{
    int EVA_YEAR = int.Parse(q("year"));
    int EVA_SEASON = int.Parse(q("season"));
    Test_BUL.CPCSB bul = new Test_BUL.CPCSB();
    DataTable dt = bul.GetModelList(EVA_YEAR, EVA_SEASON);
    StringBuilder jsonString = new StringBuilder();
    if (dt.Rows.Count > 0)
    {
        int i = 0;
        jsonString.Append("[");
        for (; i < dt.Rows.Count - 1; i++)
        {
            jsonString.Append("{\"TCK_CATE\":\"" + dt.Rows[i]["TCK_CATE"].ToString() + "\",");
            jsonString.Append("\"WEIGHT\":" + "\"" + dt.Rows[i]["WEIGHT"].ToString() + "\"" + "},");
         }
            jsonString.Append("{\"TCK_CATE\":\"" + dt.Rows[i]["TCK_CATE"].ToString() + "\",");
            jsonString.Append("\"WEIGHT\":" + "\"" + dt.Rows[i]["WEIGHT"].ToString() + "\"" + "},");
        jsonString.Append("]");
    }
    Response.Write(jsonString.ToString());
}

3.一些需要注意的问题和解决方案
3.1就像我以前写的前端往后端传送json字符串一样,你也可能需要传送单个json实体和一组json实体,可能说在ajax中success对于返回的字符串的转为json就会有差异。
对于单个的实体字符串转换,我使用的方法是:var right = JSON.parse(reg);
实际上转换的方法有很多,在这一步遇到困难可以尝试多种方法,当然前提是你正确的接受到了json字符串数据。
3.2这一点教训其实和本章主题并不相关,只是我对于ajax中错误的一点体会。
ajax中的参数有一条为datatype,当你将其设为json后,如果返回的是后台查询错误的提示,例如response.write(“查询失败!”);ajax会认为返回的并不是预期的数据类型,进入error。
3.3这点体会算是在后面做别的模块发现的小细节,.net其实是可以多次返回数据,举个例子,你可以在后端通过response.write()多次传送数据。
在这里我仅提出一些个人的理解,我们通过ajax方式请求数据,其实本质上说是一个浏览器向web服务器发送请求的过程,这里我理解是http通信。感兴趣的同学可以去查一下http通信的特点,这里我仅仅只是简单提一下“无连接”性,每一次请求都是客户端发起,服务器响应后,在关闭连接,换句话说,我们的整个请求都是在一次连接过程中发生的,这就是为什么我们可以在一次请求中多次返回,却不会多次ajax请求只返回一次数据。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值