2012-12-21 32 views
1

我使用jQuery JavaScript库5.0上jQuery.getJSON()如何获得

我使用这个代码

var urlToGetToken = 'http://test.com'; 
     $.getJSON(urlToGetToken, function (data) { 
      document.getElementById("demo3").innerHTML = data.access_token; 
     }).success(function() { 
      alert("second success"); 
     }) 
      .error(function() { 
      alert("error"); 
     }) 
      .complete(function() { 
      alert("complete"); 
     }); 
请求的状态

我想打印在demo3中,状态码和错误消息以防Ajax请求失败。

我累了使用.error()...但没有成功。

任何想法?

+2

如果你使用jQuery,你为什么用'document.getElementById'?只需使用'$(“#demo3”)。html(data.access_token);' – h2ooooooo

+0

只是为了测试:-) – GibboK

+0

你说你使用'.error()'但没有成功。你能给我们用这个'error()'调用的代码吗? – h2ooooooo

回答

4

承诺/ Deferreds在jQuery的1.5推出 - 我不知道您使用的是1.4.2

我们无法通过“失败”回调到$ .getJson语法 - 你可以使用$就代替 - 这绝对应该工作

如果你想挖掘故障事件

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

var successCallback = function(data){ 
$("#demo3").innerHTML = data.access_token; 
}; 

var failureCallback = function(jqXHR, textStatus, errorThrown){ 
$("#demo3").innerHTML = "Your error message"; 
}; 
+0

有趣的是,在这种情况下,我如何获得请求的状态? – GibboK

+0

@GibboK你会介意看看'$ .ajax'的API文档吗? –

+1

@Gibbok - 这没有记录,我不知道'textStatus'可能的值是什么,你可以使用'textStatus'和'errorThrown'的组合来显示错误信息 - 对于文本状态AFAIK可能值是“超时” “错误”, “未修改”, “成功”, “parsererror” –

0

从文档:

jQuery.getJSON(url [, data] [, success(data, textStatus, jqXHR)]) 

所以:

$.getJSON(urlToGetToken, function (data) { 
    document.getElementById("demo3").innerHTML = textStatus; 
}).success(function() { 

将为您提供结果。

+0

我不认为'XMLHttpRequest'具有'成功'方法(错误存在于原始代码中)。 –

2

至于$.getJSON是要找到错误味精使用该Ajax请求:

$(document).ajaxError(function(event, msg, settings){ 
    alert(msg); 
});