Jquery在有效,正确标记的JSON数据上给出错误?

时间:2011-10-07 19:38:51

标签: jquery json

  

可能重复:
  Cross Domain Limitations With Ajax - JSON

我正在使用以下方法来尝试获取json(我只是通过两种方式来查看正在发生的事情。禁用任何一种方式只运行一种或另一种方法会让我犯同样的错误。)

                var jqxhr = $.getJSON("http://exampleurl/stats.json", function() {
                alert("success");
            })
            .success(function() { alert("second success"); })
            .error(function(data) { console.log(data); })

            $.ajax({
            url: "http://exampleurl/stats.json",
            dataType: 'text json',
            cache: false,
            success: test
            });

当我运行它时,我得到标准200 ok,但有错误。 (并没有解释,对象只有一个“错误”的statusText)。

我回来的JSON(通过tcpdump和wireshark)看起来像:

  

HTTP / 1.1 200确定

     

内容类型:application / json

     

内容长度:341

     

{“perIPUsage”:[{“10secWindow”:{       “bitsPerSecond”:904956.8,       “bytes”:1131196,       “秒”:10},“2secWindow”:{       “bitsPerSecond”:867056,       “bytes”:216764,       “秒”:2},“60secWindow”:{       “bitsPerSecond”:984093.8666666667,       “bytes”:7380704,       “秒”:60},“地址”:“0:0:0:0:0:0:0:1”}}}

哪个JsonLint说完全有效(并且您会注意到内容类型设置正确)。

我正在呼唤一个外部地址,所以我不能只是相对它(我已经听过为某些人修复它)。

我做错了什么?为什么一直认为我的有效json是错的?

3 个答案:

答案 0 :(得分:0)

您正在使用dataType“text json”,它将尝试将文本转换为JSON。但你没有得到文字;你得到application/json。所以只需使用dataType“json”,看看会发生什么。

答案 1 :(得分:0)

dataType用于指定返回数据的类型

  dataType: 'text/html',

OR

dataType: 'json',

答案 2 :(得分:0)

有一个名为Same Origin Policy的内置限制来阻止来自浏览器的跨域Ajax请求。几乎所有浏览器都实现了这一点,这是一件好事。

有一些解决方法,例如文章here或使用JSONP。但这是对浏览器发送的Ajax请求的基本限制。

另请参阅:Cross Domain Limitations With Ajax - JSON