无法从 JQuery ajax 调用接收 JSON

Posted

技术标签:

【中文标题】无法从 JQuery ajax 调用接收 JSON【英文标题】:Unable to receive JSON from JQuery ajax call 【发布时间】:2010-09-09 22:04:08 【问题描述】:

我已经确定来自服务器的 JSON 是有效的(手动进行 ajax 调用),但我真的很想使用 JQuery。我还使用 firebug 确定发送到服务器的“发布”URL 是正确的。但是,错误回调仍在被触发(解析错误)。我也试过数据类型:文本。

我还应该包括其他选项吗?

$(function() 
    $("#submit").bind("click", function() 
        $.ajax(
            type: "post",
            url: "http://myServer/cgi-bin/broker" ,
            datatype: "json",
            data: 'start' : start,'end' : end,
            error: function(request,error)
                alert(error);
            ,
            success: function(request) 
                alert(request.length);
            
        ); // End ajax
    ); // End bind
); // End eventlistener

【问题讨论】:

【参考方案1】:

以下是一些我会尝试的建议:

1) 您指定的“数据类型”选项应该是“数据类型”(我相信区分大小写)

2) 尝试使用 'contentType' 选项:

contentType: "application/json; charset=utf-8"

我不确定这将有多大帮助,因为它用于对您的帖子网址的请求中,而不是在响应中。 有关更多信息,请参阅本文:http://encosia.com/2008/06/05/3-mistakes-to-avoid-when-using-jquery-with-aspnet-ajax (它是为 asp.net 编写的,但可能适用)

3) 三重检查您的帖子 url 的输出并通过 JSON 验证器运行输出,以绝对确定它是有效的并且可以解析为 JSON 对象。 http://www.jsonlint.com

希望这能有所帮助!

【讨论】:

非常感谢您花时间回答。这是我作为数据类型的 dataType 选项 请注意,将dataType设置为“json”会自动将contentType设置为“application/json”。 @BHR +1 根据文档正确。但是,可能需要注意:我正在使用 jquery 1.6.4 atm 并发现我需要明确设置 contentType: "application/json; charset=utf-8"【参考方案2】:

为什么是myResult 而不是request

success: function(request) 
  alert(myResult.length);

【讨论】:

我很确定在我的完整代码中我正在将请求操纵到 myResult 中......但我改变了它以便更清楚......问题是 dataType 被拼写为'datatype '。感谢您的评论【参考方案3】:

数据参数错误。这是一个有效的示例:

数据:索引:ddl.selectedIndex,

这将构造一个具有名为 index 的属性的对象,其值为 ddl.selectedIndex。

您需要从数据参数行中删除引号

祝你好运 一个

【讨论】:

-1,将字符串作为属性名称是完全有效的语法。在某些情况下,这是必须的,例如,当您有一个在 javascript 中不是有效标识符名称的属性名称时,引用它将允许您给它一个值。一个常见的例子是"class",它必须被引用,因为它是一个保留字。在 JSON 语法中,甚至要求将所有属性名称用双引号括起来。

以上是关于无法从 JQuery ajax 调用接收 JSON的主要内容,如果未能解决你的问题,请参考以下文章

jQuery ajax 调用无法从 CakePHP 3.8 读取 json 编码数据(获取一个空数组)

从 JQuery.ajax 成功数据中解析 JSON

无法从 jQuery Ajax 调用中获得正确的返回值 [重复]

无法解析 JQuery ajax 调用返回的 JSON

jquery ajax调用问题

jquery如何在另一个结束后使用多个ajax调用