JSON.parse有效,但jQuery.getJSON返回http错误403

时间:2011-11-15 19:44:49

标签: javascript jquery json parsing

当我使用JSON.parse(jsonString)时,JSON的解析完全没问题。

var result = JSON.parse(jsonString);

但是当我使用jQuery.getJSON(jsonString)时,我收到了一个http错误403.

var result = jQuery.getJSON(jsonString);

知道为什么一个会工作而另一个不会?他们都在读字符串。

谢谢!

2 个答案:

答案 0 :(得分:5)

  

他们都在读一个字符串。

哦不!这两种方法非常不同。他们绝对没有任何共同之处。他们正在完成两项完全不同的任务。

第一个简单地将JSON字符串解析为javascript对象:

var result = JSON.parse('{"foo": "bar"}');
alert(result.foo);

将显示bar。另请注意,JSON.parse方法是现代浏览器中的内置方法。它是纯粹的javascript,与jQuery完全无关。旧版浏览器不支持它。对于他们,您需要在页面中加入json2.js脚本。

The second执行AJAX调用,并将参数作为参数:

jQuery.getJSON('/someserversidescript', function(result) {
    // callback to be executed when the AJAX request succeeds
});

正如你在这里看到的那样,论证是一个网址。调用jQuery.getJSON('{"foo": "bar"}')完全没有意义。我想这就是你的服务器响应403错误的原因,因为这不是你服务器上的有效网址。它期望服务器将返回JSON字符串作为响应。它只是简写:

$.ajax({
    url: '/someserversidescript',
    type: 'GET',
    dataType: 'json',
    success: function(result) {
        // callback to be executed when the AJAX request succeeds
    }
});

答案 1 :(得分:1)

getJSON()是对返回JSON对象的服务器的异步调用。 JSON.parse()接受一个字符串并在内存中返回一个JSON对象。它们完全不同。