升级到jQuery 1.5.2后,在返回json数据时,我的ajax调用开始出现问题。
错误是(由下面的templateGet()返回):
Ajax调用失败:[object Object] parsererror jQuery152040843801534161517_1302269320612 没被称为
下面是一个样本返回json:
{"subject":"Test subject","body":"Test body"}
继承人jQuery函数
function ajax_templateGet(templateid) {
showLoading();
var query = '?action=get_template' + '&templateid=' + templateid;
$.ajax({
type: 'POST',
url: 'script/ajax/mail_template/mail_template.ashx' + query,
data: '',
dataType: 'json',
success: function(data) {
$("#preview_subject").empty().html(data.subject);
$("#preview_body").empty().html(data.body);
},
error: function(xhr, status, error) {
$.jGrowl($.i18n._('Ajax call failed: ' + xhr + ' ' + status + " " + error), { header: $.i18n._('Ajax call failed!') });
},
complete: function(jqXHR, textStatus) {
hideLoading();
}
});
}
任何人都可以看到我做错了什么?
答案 0 :(得分:3)
您使用的是验证插件吗?如果是这样,请确保你得到一个与1.5兼容的新副本 - 这是一个已知的问题,也是我所拥有的。
答案 1 :(得分:0)
首先需要解析返回的JSON值....
您无法立即使用data.subject
首先,您需要下载json2.js文件并添加到您的应用中..
然后解析变量data
var response=eval("("+JSON.stringify(data)+")");
然后在您发布的代码中使用变量response
代替data
success: function(data) {
var response=eval("("+JSON.stringify(data)+")");
$("#preview_subject").empty().html(response.subject);
$("#preview_body").empty().html(response.body);
}
答案 2 :(得分:0)
在jquery1.5.2.js中找到以下行:
d.ajaxPrefilter("json jsonp", function (b, c, e)
并改为
d.ajaxPrefilter("jsonp", function (b, c, e)
这很有效,我的所有$ .ajax函数再次开心。
source :: http://debeerdev.wordpress.com/2011/04/13/jquery-1-5-2-json/