JSON Feed使用jQuery getJSON时返回null

时间:2010-03-12 01:05:53

标签: jquery ajax json null feed

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

它返回null。我真的无法访问这个。我必须让服务器管理员更新我喜欢的Feed,所以如果你能告诉我如何让它按原样运行,而不在我的HTML中添加标签,请告诉我。我将在jQuery中使用它,并且我一直在尝试使用返回null的getJSON。

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

返回null。但是,如果我使用flickr feed,它可以正常工作。它返回它应该的东西,[onject Object]。有什么想法吗?

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

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:1)

我认为你的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