我通过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将返回:
([]);
答案 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/