当我使用JSON.parse(jsonString)时,JSON的解析完全没问题。
var result = JSON.parse(jsonString);
但是当我使用jQuery.getJSON(jsonString)时,我收到了一个http错误403.
var result = jQuery.getJSON(jsonString);
知道为什么一个会工作而另一个不会?他们都在读字符串。
谢谢!
答案 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对象。它们完全不同。