2011-04-08 101 views
2

升级到jQuery 1.5.2后,我开始有问题,当我返回json数据时,我的ajax调用。jquery,与数据类型的Ajax调用问题是json

(通过templateGet()返回的下面)错误:

Ajax调用失败:[对象的对象] parsererror jQuery152040843801534161517_1302269320612 不叫

下面有一个样品返回JSON:

{"subject":"Test subject","body":"Test body"} 

继承人jQuery函数n

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(); 
     } 
    }); 
} 

任何人都可以看到我做错了什么?

+1

是否使用了验证插件?如果是这样,确保你得到一个与1.5兼容的新副本 - 这是一个已知问题,我也有过。 – 2011-04-08 13:37:38

+0

非常感谢,只是将jQuery验证插件从1.7.0升级到1.8.0,并且所有工作似乎都在工作 - 发表您的评论作为答案并接受它 – Muleskinner 2011-04-08 13:43:46

+0

好的,谢谢 - 很高兴帮助 – 2011-04-08 13:48:00

回答

3

您使用的验证插件?如果是这样,确保你得到一个与1.5兼容的新副本 - 这是一个已知问题,我也有过。

https://github.com/jzaefferer/jquery-validation

+0

解决了问题我也是。 – 2011-04-25 15:16:34

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); 
}