0

我遇到了以下问题:我需要从一个via JQuery / JavaScriptJSON下载一个文件。从理论上讲,这应该是非常基本的。API

我试过$.ajax了,它的所有兄弟姐妹都喜欢$.getor $.getJSON。我总是得到200 OK但我的 Firebug 报告错误。打印错误只是说:“错误” - 所以没有那么有帮助。

我读到可能 JSON 文件已损坏。所以我尝试了一个纯文本文件(*.txt)。结果相同。

JSON 文件有效,我通过验证器对其进行检查。

我也尝试过ContentTypedateType尝试过json...jsonp

我基本上使用了这样的东西(有一百万种变化用于测试目的):

$.ajax({
   url: 'http://www.myurl.com/api/v1/myfile.json',
   ...
   success: function(data) {
      console.log(data);
    },
   error: function(error) {
     console.log(error.statusText);
   }
});

我在这里错过了一些重要的事情吗?似乎没有任何东西可以改变 AJAX 调用的行为,这真的很奇怪。

事实上,我并不真的需要 AJAX,因为我需要在加载页面时抓取 JSON 文件......

并且 JSON 文件与 AJAX 调用者不在同一个域中。

4

4 回答 4

3

该 URL 是否位于您尝试从中获取数据的同一台服务器上?

如果没有,您遇到了跨域请求,只能使用 JSONP 处理。因此,JSON 文件本身必须与 JSONP 格式兼容,否则 jQuery 将无法处理它(即使您提供了 'jsonp' 数据类型)。

PS:Firebug 将始终显示响应代码 200,但为此类请求提供空响应正文

于 2012-09-04T13:49:39.077 回答
1

通过禁用安全性尝试以这种方式

$.ajax( {
        type : 'GET',
        contentType : "application/json; charset=utf-8",
        url : surl,  \\specify  your url
        async : false,
        dataType : 'json',
        headers : {
            Accept : "application/json",
            "Access-Control-Allow-Origin" : "*"
        },
        crossDomain : true,
        success : SucceedFunc,
        error : function(data, textStatus, errorThrown) {
            console.log("error" + ' ' + JSON.stringify(data) + ' ' + textStatus + '  ' + errorThrown);
        }
    });
function SucceedFunc(data) {
               alert("success");
                   }

    }
于 2012-09-04T14:32:00.233 回答
0

您是否尝试以正确的方式捕捉错误?

$.ajax({
    url: 'http://www.myurl.com/api/v1/myfile.json',
    success: function(data) {
         console.log(data);
    },
    error: function(error) {
         console.log(error.message);
    }
});
于 2012-09-04T13:52:49.223 回答
0

如果您使用的是 chrome,请转到 cmd 提示符并通过禁用安全性来运行 chrome。您可以使用 pathwhere_chrome_is_located\chrome.exe --disable-web-security 禁用安全性并运行 html 页面。我想这可能会对你有所帮助。

于 2012-09-04T14:24:51.953 回答