检查JSON的响应是否为空

时间:2012-12-28 09:47:17

标签: php javascript jquery json jsonp

我通过JSON从MySQL获取一些数据。但是我想确定响应是否为空,所以如果它不为空,我会显示返回的信息,否则我会显示一条消息。

我尝试了多种可能的解决方案,例如检查JSON响应的长度,检查项目Severity是否存在,如果不是,则假设它为null等。

以下是我的代码片段:

var data = $.ajax({
    type: 'GET',
    url: 'http://www.mydomain.com/php/loaddata.php?&jsoncallback=?',
    dataType: 'JSONp',
    timeout: 5000,
    success: function(data) {
        $.each(data, function(i,item){
            if (item.Severity == 1) {   
                // Do Something
                .....

当JSON找到数据时,回复是这样的: 的更新:

([{"Severity":"1","Latitude":"35.872883","Longitude":"14.449133","Address":"Some Address 1","Heading":"25","Timestamp":"2012-12-28 10:15:03"},{"Severity":"2","Latitude":"35.871269","Longitude":"14.501580","Address":"Some Address 2","Heading":"80","Timestamp":"2012-12-28 10:15:31"}]);

否则,如果没有找到数据,JSON将返回:

([]);

6 个答案:

答案 0 :(得分:2)

自: Console.log返回"string" - user1809790
这应该有效:

success: function(data) {
    if (data != '' && data !== null) { // Check if the data's not an empty string or null.
        $.each(data, function(i,item){
            if (item.Severity == 1) {
                // Do Something

答案 1 :(得分:0)

使用转换将让js引擎执行解析工作:

if (""+data == "")
{
alert("Data is empty");
}

注意:只有空字符串或空数组(可以递归地包含其他空字符串/数组)才能满足此条件,这符合您的要求

答案 2 :(得分:0)

成功获得的数据是JSON,所以首先你要解析它,这样就可以了吗

var x = jQuery.parseJSON(data) // this will give you array 
if(x.length == 0) {
    alert("empty");
}

答案 3 :(得分:0)

确保表达式被否定。

success: function(data) {
    if(data.length != 0){
        $.each(data, function(i,item){
            if (item.Severity == 1) {
                //Do something
            }
        });
    }
}

答案 4 :(得分:0)

检查此代码段

var result="[]"; // this is your json string result
var parsed=jQuery.parseJSON(result); //this is now an array! so we can check the length

if(parsed.length==0)
    alert("Error")

答案 5 :(得分:0)

([])无效json,因此无法解析。 []是。

这将引发语法错误:

var json = "([])";
var obj = JSON.parse(json);
console.log(obj.length);

虽然这有效但输出0:

var json = "[]";
var obj JSON.parse(json);
console.log(obj.length);

JSFiddle here - http://jsfiddle.net/m9LUm/1/