如何使用JQuery解析json响应并添加错误等功能?

时间:2011-10-12 11:08:22

标签: jquery json error-handling

我正在使用Json解析制作迷你应用。通过点击网址http://localhost:3000/cities.json获得的输出如下

[
    {
    "id": 1,
    "name": "Bangalore"
    },
    {
    "id": 2,
    "name": "Chandigarh"
    },
    {
    "id": 3,
    "name": "Chennai"
    },
    {
    "id": 4,
    "name": "Hyderabad"
    },
]

我使用函数

解析了这个
  $.getJSON("http://localhost:3000/cities.json?&callback=?", function(data) {
                //something something
 }

现在我想添加.error功能,以防万一有回复问题,或说服务器没有响应我可能会通过发出类似

的提醒来了解它
.error(function(){alert("error");})

我按照以下方式尝试了

  $.getJSON("http://localhost:3000/cities.json?&callback=?", function(data) {
                //something something
         }).error(function(){
            alert("error");
         })

我也用这种方式尝试了

     var cities = $.getJSON("http://localhost:3000/cities.json");
                   cities.error("hi");        

但他们都没有工作。要检查错误,我停止我的本地服务器,它没有给我任何警报。请指导我应该采取哪种方式?

------的修改 --------

也尝试使用

 var jqxhr = $.getJSON("http://localhost:3000/cities.json?callback=?", function() {
          alert("success");
        })
        .success(function() { alert("second success"); })
        .error(function() { alert("error"); })
        .complete(function() { alert("complete"); });

如果我的localhost:3000服务器正在运行,它会给我警报成功和第二次成功,但万一我停止它没有错误调用,也使网址 http:// localhost:3000 / cities.json 无论服务器是否运行,总是倾向于给出错误

5 个答案:

答案 0 :(得分:1)

您可以使用ajaxSetup

$.ajaxSetup({
  error:function(XMLHttpRequest) {   
    //error
    console.log(XMLHttpRequest.responseText);
}});

并且您的getJSON照常使用

  $.getJSON("http://localhost:3000/cities.json?&callback=?", function(data) {
                //something something
 });

答案 1 :(得分:0)

您现在使用的功能只是$.ajax的简写:

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

如果您将代码更改为$ .ajax,则可以使用error,方法与success相同。或者,您可以使用$.ajaxSetup为您的ajax调用设置默认错误处理程序。

答案 2 :(得分:0)

如果要创建json数据,则应创建一个名为error的参数。默认情况下将其设置为false,如果出现错误,则为true。然后在getJSON时检查错误值。

否则,我可能会建议使用

.get("", {}, function(json){
   try{
     var obj = jQuery.parseJSON(json);
   }catch(err){ console.log(err); }
});

答案 3 :(得分:0)

您最后一个方法应该可以工作,但您必须指定一个错误函数: -

var cities = $.getJSON("http://localhost:3000/cities.json");
cities.error(function(){
    alert('error');
});

或者您可以使用: -

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

答案 4 :(得分:0)

这最终对我有用

           $.ajax({
            url: "http://localhost:3000/cities.json?&callback=?",
            type: "GET",
            dataType: "json",
            timeout: 10000,
            success: function(data, status, xmlstatus) {
                call_to_function(data);
            },
            error: function(x, t, m) {
                if (t === "timeout") {
                    $('#spinner').hide();
                } else {
                    $('#spinner').hide();
                }
            }
        });

由于