jQuery $.post()返回类型为json时不进入回调函数的原因及解决方法
这真是个让人特别抓心找挠肝的问题,真的差点被这个问题逼的放弃去使用json作为返回类型,而是去用html,但是有的时候就是要较汁一下。(即便现在问题解决了,我还是想说句“妈蛋”,来发泄一下)
其实主要还是自己对json的不够了解,但是很纳闷,网上对路的解决方法几乎没有。所以虽然问题很小,但是还是想要分享出来,希望能帮到需要的人。
首先$.post()格式如下:
$.post(url,data,success(data, textStatus, jqXHR),dataType)
参数描述
url
必需。规定把请求发送到哪个 URL。
data
可选。映射或字符串值。基本是json格式。
success(data, textStatus, jqXHR)
可选。请求成功时执行的回调函数。
dataType
可选。规定预期的服务器响应的数据类型。默认执行智能判断(xml、json、script 或 html)。
示例:
$.post("../../xxx/ajaxPost.aspx", { action: "xxx", id: xxx },function (data,status) { alert("name="+data.name+",age="+data.age); }, "json");
打断点可以正常进入到后台。直到想要的操作完成,组成新的json数据,利用Response.Write()返回,但是无论如何也不走function()方法,之前有想到是json格式的问题,但是改了还是不行。
后来终于终于
后台:
result = "{\"name\":\"Michael Jordan\",\"age\":\"51\"}"; Response.Write(result); Response.End();
大家注意,都知道json的格式是{"key1”: "value1”, "key2”: "value2”} 这样(或者是把{}中的双引号变成单引号),但是在C#代码部分却是需要在引号(“”)前加上转义字符(\)的,否则永远走不到回调方法。
$.post()方法在以json作为返回类型的时候,是严格要求使用json格式才可以进入回调的。所以……
运行截图:
本文出自 “给我一根儿烟” 博客,请务必保留此出处http://zhouhongyu1989.blog.51cto.com/2931598/1553324
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。