json数据,但我得到一个SyntaxError?

这里是一个页面的代码片段:

$("#add_new").button().click(function (ui,event) {
    var postdata = {
        "action":"new",
        field_kind_id:2,
        collection_id:null,
        parent_id:null,
        app_struct_id:null,
        member_id:1033,
        app_id:1003,
    };
    $.ajax({
        url: "?",
        type: "POST",
        data: postdata,
        error: function(jqXHR, textStatus, errorThrown) {
            $().toastmessage("showErrorToast",
                "AJAX call failed: "+textStatus+" "+errorThrown);
        },
        success: function(data) {
            edit_record(data);
            return false;
        }
    });
});

实际上,发布的数据是这样的:

action  new
app_id  1003
app_struct_id   null
collection_id   null
field_kind_id   2
member_id   1033
parent_id   null

答案是这个字符串:

{x22app_idx22:1003,x22member_idx22:1033,x22collection_idx22:x22-6885x22,x22field_kind_idx22:2,x22sample_idx22:x22x22,x22parent_idx22:x22x22}

该响应是无效的json数据。 它有一个特殊的格式。 我的问题是,上面的ajax调用显示这个吐司消息:

“AJAX调用失败:parsererror SyntaxError:非法字符”

所以看起来AJAX调用失败了。 但我不明白什么是检查语法? 什么样的语法? JQuery Ajax调用没有指定“dataType:json”。 所以不应该有任何语法来检查。 我错过了什么?

JQuery文档说“dataType”的默认值是“intelligent”

“智能猜测(XML,JSON,脚本或HTML)”

如果响应不能被解释为JSON值,那么它不是JSON值,对吧? 要么它不是一个有效的JSON值(在这种情况下,它不应该被转换),或者它是(但它不应该抛出异常?)这是否意味着jQuery不够智能?


Content-Type头部在来自服务器的响应中的值是什么? 我期望对内容的格式进行猜测。


我建议你明确地将dataType设置为"text" (请参阅jQuery.ajax),以便jQuery不需要猜测响应的内容类型:

$.ajax({
    url: "?",
    type: "POST",
    data: postdata,
    dataType: "text", // the type of data that you're expecting back from the server
    error: function(jqXHR, textStatus, errorThrown) {
        $().toastmessage("showErrorToast",
            "AJAX call failed: "+textStatus+" "+errorThrown);
    },
    success: function(data) {
        edit_record(data);
        return false;
    }
});

你遇到的错误的原因可能是以下几点:jQuery假定你的服务器的响应是JSON格式并试图解析它。

链接地址: http://www.djcxy.com/p/48171.html

上一篇: json data, but I get a SyntaxError?

下一篇: MVC 4 Razor File Upload