如果json为空,如何找不到数据

时间:2014-01-20 12:16:39

标签: jquery getjson

我正在使用jquery进行一些json解析。如果json数组中没有数据,我想提出一条消息。所以我使用下面的代码并得到条件为true但没有在html div中附加消息。

我的代码:

$( "#refresh" ).click(function() {
    $.getJSON("http://ec2-72-44-51-113.compute-1.amazonaws.com:8001/get_latest_verification", function(obj){
        if(json.length==0){
             $('<p>no updates found</p>').appendTo('#rr');
        }
    });
});

任何人都可以纠正我。

4 个答案:

答案 0 :(得分:3)

你有一个小错误:

您应该检查if(obj.length==0)

而不是你那样做。

为什么?

因为这是你的回调的参数,声明为:

function(obj){...}

通知:

我当然希望您在服务器上启用cors,因为运行代码显示:

  

* XMLHttpRequest无法加载http://ec2-72-44-51-113.compute-1.amazonaws.com:8001/get_latest_verification。   来源http://run.jsbin.com不被允许   访问控制允许来源。*

我在响应中看不到任何allow -domain标头:

Accept:application/json, text/javascript, */*; q=0.01
Cache-Control:no-cache
Origin:http://run.jsbin.com
Pragma:no-cache
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36

答案 1 :(得分:0)

你可以尝试

$.isEmptyObject(obj) 

而不是json.length == 0

这适用于空数组和空对象

请参阅文档页面here

答案 2 :(得分:0)

你也可以试试这个,

if($.isEmptyObject(obj)) { //do you work here }

文档:isEmptyObject

答案 3 :(得分:0)

你有什么问题?只需检查完成的请求,json为空或请求失败(use promise pattern):

var url = "http://ec2-72-44-51-113.compute-1.amazonaws.com:8001/get_latest_verification";
$( "#refresh" ).click(function() {
     $.getJSON(url).done(function (json) {
          if(!json || json.length === 0){
              $('<p>no updates found</p>').appendTo('#rr');
           }
     }).fail(function () {
         $('<p>no updates found</p>').appendTo('#rr');
     });
});