无法从 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 编码数据(获取一个空数组)