如何从jQuery $ .getJSON()请求获取原始JSON响应?

时间:2010-10-19 00:31:43

标签: jquery json

如何从jQuery $.getJSON()请求中获取原始JSON响应?

我只想在浏览器的alert()对话框中打印原始回复?

5 个答案:

答案 0 :(得分:15)

从jQuery 1.5开始,jqXHR对象作为回调方法的第三个参数传入。 jqXHR对象有一个reponseText属性,该属性包含原始JSON字符串。

function callback(data, status, jqXHR) {
    alert(jqXHR.responseText);
    // or console.log(jqXHR.responseText);
}

答案 1 :(得分:3)

如果你正在使用JSONP,这根本不可能。

如果您要向您的域发送正常请求,请将getJSON替换为get

答案 2 :(得分:0)

http://api.jquery.com/jQuery.getJSON/

我更喜欢使用完整的.ajax方法,因此我不必记住抽象的各种签名。

文档告诉你这等同于getJSON:

$.ajax({
  url: url,
  dataType: 'json',
  data: data,
  success: callback
});

你可以在哪里:

function callback(data) {
    alert(data);
}

我强烈建议你使用Firefox和Firebug和console.log();对于这种事情。一段时间后警报会让你疯狂。

修改

根据其他回复,我可能会误解你的问题!您可以随时使用Fiddler查看原始响应。

答案 3 :(得分:0)

我最终使用https://github.com/douglascrockford/JSON-js/blob/master/json2.js中的JSON.stringify()功能。

不理想,因为它是另一个正在加载的javascript文件,但它符合我的目的。

答案 4 :(得分:0)

有许多不同的选项可以获得实际响应,无论是解析的JSON还是浏览器/服务器生成的错误'getJSON'方法试图解析但失败。

注意:使用'.always'方法,参数会根据失败或成功而改变。

$.getJSON(getData.php, function(data,textStatus,jqXHR) {
    console.log(jqXHR.responseText);

//As of 1.5 we have these methods:
}).always(
    function(jqXHR, textStatus, errorThrown) { //on failure
        console.log(jqXHR.responseText);
}).always(
    function(data, textStatus, jqXHR) { //on success
        console.log(jqXHR.responseText);
}).fail(
    function(jqXHR, textStatus, errorThrown) {
        console.log(jqXHR.responseText);

//As of 1.8 we have this method also:
}).then(
    function(data, textStatus, jqXHR) {
        console.log(jqXHR.responseText);}, 
    function(jqXHR, textStatus, errorThrown) {
        console.log(jqXHR.responseText);
});

如果您想了解更多信息,请访问:
http://api.jquery.com/jQuery.ajax/#jqXHR
http://api.jquery.com/category/deferred-object/