首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >jQuery无法从AJAX查询中解析我的JSON

jQuery无法从AJAX查询中解析我的JSON
EN

Stack Overflow用户
提问于 2008-10-30 09:47:17
回答 16查看 204.7K关注 0票数 88

我在使用jQuery.ajax()解析服务器返回的一些JSON数据时遇到了困难。

要执行我正在使用的AJAX:

代码语言:javascript
复制
$.ajax({
  url: myUrl,
  cache: false,
  dataType: "json",
  success: function(data){
    ...
  },
  error: function(e, xhr){
    ...
  }
});  

如果我返回一个项目数组,那么它工作得很好:

代码语言:javascript
复制
[ { title: "One", key: "1" }, { title: "Two", key: "2" } ]

调用成功函数并接收正确的对象。

但是,当我试图返回单个对象时:

代码语言:javascript
复制
{ title: "One", key: "1" } 

调用error函数,xhr包含'parsererror‘。我曾尝试在服务器上将JSON放在括号中,然后再将其发送到网络上,但这没有什么不同。但是,如果我将内容粘贴到Javascript中的字符串中,然后使用eval()函数,它会完美地计算出它的值。

你知道我做错了什么吗?

安东尼

EN

回答 16

Stack Overflow用户

回答已采纳

发布于 2008-10-30 10:29:13

您的服务器是否以内容类型"*/json"的形式发送数据?如果没有,请相应地修改响应头。例如,发送"application/json"就可以了。

票数 72
EN

Stack Overflow用户

发布于 2008-10-30 17:45:49

根据json.org规范,您的退货无效。名称总是用引号引起来的,所以您应该返回

代码语言:javascript
复制
{ "title": "One", "key": "1" }

代码语言:javascript
复制
[ { "title": "One", "key": "1" }, { "title": "Two", "key": "2" } ]

这可能不是您的设置的问题,因为您说它们中的一个现在可以工作,但为了正确起见,应该对其进行修复,以防将来需要切换到另一个JSON解析器。

票数 52
EN

Stack Overflow用户

发布于 2008-10-30 13:56:25

这个问题通常是因为您的请求接收到了错误的mime类型。在您自己的计算机上进行开发时,有时您无法从“服务器”(即您自己的计算机)接收到正确的mime类型。我曾经在浏览器中打开本地存储的文件进行开发时遇到过这个问题(例如,url是"c:/project/test.html")。

尝试使用beforeSend属性添加重写mime类型的回调函数。这将诱使代码处理json,尽管服务器发送并由您的调用代码接收错误的mime类型。下面是一些示例代码。

根据this question,正确的mime类型是application/json,但我确实知道当我尝试它时(现在是几年前),application/j-son起作用了。您可能应该先尝试使用application/json。

代码语言:javascript
复制
var jsonMimeType = "application/json;charset=UTF-8";
$.ajax({
 type: "GET",
 url: myURL,
 beforeSend: function(x) {
  if(x && x.overrideMimeType) {
   x.overrideMimeType(jsonMimeType);
  }
 },
 dataType: "json",
 success: function(data){
  // do stuff...
 }
});
票数 30
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/249692

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档