AJAX获取json


AJAX作为web1.0与web2.0最显著的标识,是web软件工程师必须学习的一门技术。即使是后端工程师,也应该稍作了解。因为项目一直比较急,所以并没有花太多时间来仔细研究ajax里面涉及到的技术。对于ajax的使用,一开始我是拒绝的。博主比较喜欢简单没有挑战的东西,对于新知识的汲取是很快,但是刚开始很抵触,所以万事开头难。好的,话不多说,进入主题。

对于ajax,我分几个点来说(这些只是在我看来,有出入的地方请大家指正):

1、用途(我所看到的):对于我这种不到迫不得已不去接受新知识的人来说,ajax最大的优点在于无刷新更新页面信息;

症状:控件响应服务端程序后,总会刷新页面,造成页面有短暂的百页情况,这个不是我们要的效果。

预期:实现局部刷新,消除百页现象;

2、用法(2天成效):

只看了两天,没有什么太高深的用法,但是有些东西确实摸索了很多,我先说一下吧。我的开发环境是VS2008;采用的是C#的DOTNET框架,脚本采用JQuery框架。我也看了一些网上的W3Cschool的教程,他是这样写的:

 function loadXMLDoc(url, cfunc) {
            if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
                xmlhttp = new XMLHttpRequest();
            }
            else {// code for IE6, IE5
                xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
            }
            xmlhttp.onreadystatechange = cfunc;
            xmlhttp.open("post", url, true);
            xmlhttp.send();
        }
        
        function myFunction() {
            loadXMLDoc('/Ajax/CardInfo_ajax.ashx?pageName=cardInfo', function() {
            if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
                    $("#content").html("");
                    $("#content").html(xmlhttp.responseText);
                }
            });
        }
网上有详细解释,我就大概解释一下:这里是封装了一个回调函数,但其实就是先申请xmlhttp对象,由他根据url等参数调用相应的异步响应程序,然后由对应程序通过response对象返回到responseText里面,然后通过$("#id").html;或者通过返回的json数据格式,自行前台拼接就可以了;

然后看了看JQuery的ajax调用方法,省下不少代码呀:

 $("#Button1").click(function() { 
        
                var options = { 
            cache: true,
            type: "get",
            url: "/AJAX/CardInfo_ajax.ashx?pageName=cardInfo",
            async: true,
            contentType:"json",
            error: function(request) {
                alert("Connection error");
            },
            success: function(data) {
                if (data.length > 0){
//                    $("#table_info").html("");
//                    $("#content").html(data);       <!--第一种方法-->
//                      var a = data;
                        eval("a="+data);
<span style="white-space:pre">			</span>alert(a.people[0].lastName);<span style="white-space:pre">	</span><!--第二种方法--><span style="white-space:pre">	</span>
                }
            },
           };//option结束
            $.ajax(options);
            return false;
            });
我后台是这样给出的:

string json = "{ \"people\": ["+
"{ \"firstName\": \"Brett\", \"lastName\":\"McLaughlin\", \"email\": \"aaaa\",\"color\":\"red\" }," +
"{ \"firstName\": \"Jason\", \"lastName\":\"Hunter\", \"email\": \"bbbb\",\"color\":\"red\"}," +
"{ \"firstName\": \"Elliotte\", \"lastName\":\"Harold\", \"email\": \"cccc\",\"color\":\"blue\" }]}";
                        //ajax_ret(context,getTableData());
                            context.Response.ContentType = "application/Json";
                        context.Response.Write(json.ToString());
                        context.Response.End();
注意,虽然不知道为什么,但是我VS2008后台这个response.ContentType = "application/Json"写成"application/json"是无效的,程序会在response.end处中止。注意大小写,这是其一。第二,注意,我这里后台虽然是命名json,但是本质依然是字符串,想要获取到json格式,我是通过js里的eval方法转换的。


这样就获取到json数据串了,大家有什么好的建议也可以告诉我,我认为,这是最笨的c#里面ajax与后台之间进行通讯的方式。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值