jquery中的ajax的回调函数不能执行解决方案

关于jquery中的ajax的回调函数不能执行的原因与解决方法。

在做ajax方法的时候遇到了一个小问题:ajax的回调函数不执行,辛苦折腾半天,最终发现了原因。

简单的问题模拟源代码如下:

Action代码

public void updateIndexPageSeo() {
String json = "";
json = "{flag:true}";
this.getResponse().setContentType("text/html; charset=utf-8");
this.getResponse().getWriter().write(json);
}

前台jquery代码

var param = {'seoIndexPage.seoIndexPageId':seoIndexPageId}
$.ajax({type:"POST", 
url:"/seo/index!updateIndexPageSeo.do",
 data:param, dataType:"json"
, success:function () {
alert("tes");
},error: function(){
alert(arguments[1]);
}
});

执行改ajax方法是一直返回一个错误:parsererror ,这种情况你在firefox等浏览器中监控显示ajax已经返回了json数据,可就是没有进入到success回到函数中。其实这里的原因是返回的json不严格 json=”{flag:true}”; jquery不能解析造成的报错,后面改为 json=”{\”flag\”:\”true\”}”;就没有错误了。

正确的Action写法

public void updateIndexPageSeo() {
String json = "";
json = "{\"flag\":\"true\"}";
this.getResponse().setContentType("text/html; charset=utf-8");
this.getResponse().getWriter().write(json);
}

另外在写action中的方法时需要注意编码的问题:在后面加上getResponse().setContentType(“text/html; charset=utf-8′);注意是utf-8,如果是utf8则firefox没问题,ie会出问题的。

“jquery中的ajax的回调函数不能执行解决方案”的一个回复

发表评论

电子邮件地址不会被公开。 必填项已用*标注

16 − 8 =

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据