经过一天的不断测试和探索,终于找到asp开发中彻底的解决jquery跨域的方法:
前几天也写了一篇文章:jquery跨域的方法 ,后来在应用的过程中发现,这只是jquery跨域的基础,服务器端也需要做一些处理。
首先介绍一下服务器端程序:
<%@ codepage=65001%> <% response.Charset="utf-8" callback=request("callback") str="{""status"":1,""postPrice"":[{""Productid"":1,""Productname"": ""手机"",""Price"":25.5,""num"": 1000,""url"":""http://www.baidu.com""},{""Productid"":2,""Productname"": ""相机"",""Price"":75,""num"": 2000,""url"":""http://www.aspbc.com""}]}" response.write callback&"("&str&")" %>(鼠标移到代码上去,在代码的顶部会出现四个图标,第一个是查看源代码,第二个是复制代码,第三个是打印代码,第四个是帮助)
注意一下这里的: callback=request("callback")和下面的输出response.write callback&"("&str&")",这是jquery服务器端要增加的内容,用来返回给客户端的。
在看看客户端页面程序:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>jquery跨域的彻底解决方法</title> <script type="text/javascript" src="/js/jquery/jquery.js"></script> <script type="text/javascript"> $(function(){ $.getJSON("http://www.aspbc.com/demo/json/1.asp?callback=?", { name: "John",t:Math.random() }, function(data){ var status=data.status; if(status==1) { var str=''; $.each(data.postPrice,function(i){ m=data.postPrice[i]; str+='<ol> '; str+='<li>产品ID:'+m.Productid+'</li>'; str+='<li>产品名称:'+m.Productname+'</li>'; str+='<li>价格:'+m.Price+'元</li>'; str+='<li>数量:'+m.num+'</li>'; str+='<li>网址:'+m.url+'</url>'; str+='</ol>'; } ); $("#div1").html(str); } } ); }); </script> </head> <body> <div id="div1"></div> </body> </html>(鼠标移到代码上去,在代码的顶部会出现四个图标,第一个是查看源代码,第二个是复制代码,第三个是打印代码,第四个是帮助)
这样就行了。
本来我发现服务器端生成的json字符串前面有一些jquery+字符串的东西,应该改变了json的格式,但到了客户端的时候,我们得到了data这个值,这个data中应该有服务器端子的那些jquery字符串的。但这个就会被jquery自动处理掉,不需要我们处理这个,我们只需要按平时的习惯去获取json字符串我们要的内容就行了。
是不是挺好用的?