1

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

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

这是我的代码片段:

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 返回:

([]);
4

6 回答 6

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
于 2012-12-28T10:16:54.107 回答
0

使用强制转换将让 js 引擎完成解析工作:

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

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

于 2012-12-28T09:51:12.943 回答
0

你将获得成功的数据是 JSON,所以首先你必须解析它,所以这对你有用

var x = jQuery.parseJSON(data) // this will give you array 
if(x.length == 0) {
    alert("empty");
}
于 2012-12-28T09:52:20.870 回答
0

确保表达式被否定。

success: function(data) {
    if(data.length != 0){
        $.each(data, function(i,item){
            if (item.Severity == 1) {
                //Do something
            }
        });
    }
}
于 2012-12-28T09:52:40.307 回答
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")
于 2012-12-28T09:54:09.800 回答
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在这里-http: //jsfiddle.net/m9LUm/1/

于 2012-12-28T10:10:26.680 回答