jquery,使用dataType调用ajax的问题​​是json

时间:2011-04-08 13:35:06

标签: jquery ajax json jquery-1.5

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

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

3 个答案:

答案 0 :(得分:3)

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

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

答案 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/