首页 新闻 会员 周边 捐助

ajax跨域调用c# webserver 返回json数据的几点疑惑

0
悬赏园豆:10 [已解决问题] 解决于 2015-01-07 17:11
    站点A    c# webserver  代码

[WebMethod] [ScriptMethod(ResponseFormat
= ResponseFormat.Json,XmlSerializeString = false)] public void Login(string userName, string userPwd, string macAddress) { var response = HttpContext.Current.Response; response.ContentType = "text/json"; var ws = ValitateLogin(userName, userPwd, macAddress); var json = new JSONHelper {success = true}; json.AddItem("UnReadEmailNum", ws.UnReadEmailNum.ToString()); json.AddItem("IsValid", ws.IsValid.ToString()); json.AddItem("RetString", ws.RetString); json.AddItem("EmailUrl",ws.EmailUrl); json.ItemOk(); response.Write(json.ToString()); }

站点B ajax 跨域调用代码 $(
function () { $("#jsonp_btn").click(function () { $.ajax({ async:false, url: 'http://192.168.1.2:14671/OA/Email.asmx/Login', // 跨域URL type: 'GET', dataType: 'jsonp', contentType: "application/json; charset=utf-8", jsonp: 'jsoncallback', //默认callback data: {"userName":"admin","userPwd":"123456","macAddress":""}, //请求数据 timeout: 5000, beforeSend: function(){ //jsonp 方式此方法不被触发。原因可能是dataType如果指定为jsonp的话,就已经不是ajax事件了 }, success: function(json) { //客户端jquery预先定义好的callback函数,成功获取跨域服务器上的json数据后,会动态执行这个callback函数 alert(json.respond); if(json.actionErrors.length!=0) { alert(json.actionErrors); } }, complete: function(XMLHttpRequest, textStatus){ alert(textStatus); }, error: function(xhr){ //jsonp 方式此方法不被触发 //请求出错处理 alert("请求出错(请检查相关度网络状况.)"); } }); }); });

IE浏览器报:缺少":" 谷歌浏览器报:Uncaught SyntaxError: Unexpected token : 调式查看返回数据为 : {
"UnReadEmailNum":"5","IsValid":"1","RetString":"登录成功","EmailUrl":"http://localhost:14671/OA/login.aspx?id=2"}​
我想知道为什么会报错!!!!
感谢各大侠百忙中浏览小弟的提问 谢谢了。
王火火王堇的主页 王火火王堇 | 初学一级 | 园豆:187
提问于:2012-12-05 14:47
< >
分享
最佳答案
1

直接$.getJSON()

或者在

response.Write(json.ToString()); 
下面加上
response.end();

http://www.ibm.com/developerworks/cn/web/wa-aj-jsonp1/

收获园豆:10
chenping2008 | 大侠五级 |园豆:9836 | 2012-12-05 15:04

谢谢您的解答,关于 $.getJSON() 跨域访问会提示无法访问jquer.js  。

至于加上 

response.end();这句其实没什么用。

您给的那个链接我看了,值得学习。

祝您愉快
王火火王堇 | 园豆:187 (初学一级) | 2012-12-05 16:04

加回调就OK 了  谢谢您提供的链接学习地址。 谢谢了

王火火王堇 | 园豆:187 (初学一级) | 2012-12-05 21:37
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册