【问题标题】:JSON Feed Returning null while using jQuery getJSONJSON Feed在使用jQuery getJSON时返回null
【发布时间】:2011-01-26 15:42:41
【问题描述】:

http://portlandonline.com/shared/cfm/json.cfm?c=27321

它返回空值。我真的无权访问这个。我必须让服务器管理员根据我的喜好更新提要,所以如果你能告诉我如何让它按原样工作,而不在我的 HTML 中添加标签,请告诉我。我将在 jQuery 中使用它,并且我一直在尝试使用返回 null 的 getJSON。

$.getJSON('http://portlandonline.com/shared/cfm/json.cfm?c=27321',function(json){
    alert(json);
});

返回 null。但是,例如,如果我使用 flickr 提要,它就可以正常工作。它返回它应该返回的内容,[onject Object]。有什么想法吗?

编辑:我发现这是因为 HTTP 响应标头设置为 application/json,应该设置为 text/html

【问题讨论】:

  • 看了另一个问题后,我有点疑惑:你的意思是Content-Type header被设置为“text/html”,应该是“application/json”?跨度>
  • 您能否阐明您如何确定设置为 application/json 的响应标头以及如何将其设置为 application/xml ?谢谢
  • 我的后端人员告诉我 :) 但是以 Chrome 为例,如果您转到 Inspector,则“类型”列应该说明它是什么。此外,如果您单击一个并查看“响应标头”下,您将看到“内容类型”,这也应该有所帮助。
  • 嗯,看起来页面的内容类型实际上是(确切地说)“Content-Type:application/x-javascript; charset=utf-8”

标签: jquery ajax json null feed


【解决方案1】:

JSON 显然无效。将其剪切并粘贴到 http://www.jsonlint.com/ 以获取有关语法错误的更多详细信息。您正在使用的 JSON 解析器失败,也许另一个会更宽松。

【讨论】:

  • 解析器是 jQuery 本身 :) 问题如你所说,但唯一的解决方法是在 1.4+ 中修复 JSON 本身,无论如何这是更好的解决方案。
  • 是的,看起来服务器端的 JSON 生成有点搞砸了,它不是有效的 JSON。如果它是一个重要的提要,也许你可以修复它并将其转换为有效的 json。
  • 这是因为开头的括号,但是,我看到/使用的大多数 JSON API 都这样做并且它有效。我不确定我在做什么不同......就像看看这个例子:api.flickr.com/services/feeds/…?如果您使用上面的 jQuery,但将 URL 换成那个,它也可以工作,这也是无效的。这个 .cfm JSON 提要最初没有括号,我在得到 NULL 时添加了它们,就像我现在和它们在一起一样!我不明白!
  • 嘿,非常感谢您非常提供的链接——我刚刚开始使用 JSON,它立即为我解决了一个问题。他们应该让这个链接在 json.org 上更显眼。
【解决方案2】:

我认为 JSON 输出周围的 ( ) 是导致返回 null 的原因。我会检查 json.cfm 输出并删除 () 的

更新:

( ) 应该与使用 jsonp 的远程呼叫接壤。

我刚刚对本地文件中的输出进行了本地测试,它可以正常工作。

同时使用:

$.getJSON("http://portlandonline.com/shared/cfm/json.cfm?c=27321", function(data){
   alert( data );
  });

和:

$.ajax({
    dataType: "jsonp", 
    url: 'http://portlandonline.com/shared/cfm/json.cfm?c=27321',
    success: function(data) {
     ...do stuff
    }   
   });

应适当避免任何跨域脚本问题。

对于这两个请求,我在 firebug 中得到了干净的响应。关键是发送数据类型“jsonp”

有关jsonp 的更多信息。

看看这些对你是否也有帮助:

Make cross-domain Ajax requests with jQuery

Dashboard Cross-domain AJAX with jquery

【讨论】:

  • 原来就是这样,我得到了 NULL 然后我看到:api.flickr.com/services/feeds/…?而且,看到有人建议 () 围绕它的堆栈溢出,就像 Flickr 示例(它适用于我上面的脚本),但我仍然得到空值。
  • 似乎是权限问题
  • 嗯,我不明白为什么我无法弄清楚...无论如何,我认为自己对 jQuery 非常流利:$.getJSON("portlandonline.com/shared/cfm/json.cfm?c=27321", function(data) {警报(数据);}); $.ajax({ dataType: "jsonp", url: 'portlandonline.com/shared/cfm/json.cfm?c=27321', 成功: function(data) { alert('success!'); } });没有给我成功警报...你能把你所有的代码发给我吗?我的电子邮件是 [FirstnameLastname(AT)gmail] 谢谢,我认为我只是愚蠢:)
猜你喜欢
  • 2011-02-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-20
  • 1970-01-01
相关资源
最近更新 更多