我目前正在尝试检查收到的响应是否为空。现在,我认为可行的方法如下:
$.ajax({
type: 'GET',
url: '<%=Url.Action("FindTransaction", "Calls") %>',
data:
{ companyID: $('#CompanyDDL').val(),
storeID: storeNo,
tranDate: $('#TranDate').val(),
tranNum: $('#TranNum').val()
},
success: function (tData) {
if (tData == null) {
$('#tranNotFound').show("blind", options, 500);
} else {
$('#products').html('');
$('#SKUs').html('');
$('#price').html('');
for (var i = 0; i < tData.length; i++) {
$('#SKUs').append(!tData ? '' : tData[i].SKUN + '<br />');
$('#products').append(!tData ? '' : tData[i].DESCR + '<br />');
$('#price').append(!tData ? '' : tData[i].EXTP + '<br />');
}
$('#till').html(!tData ? '' : tData[0].TILL);
$('#tran').html(!tData ? '' : tData[0].TRAN);
$('#cashier').html(!tData ? '' : tData[0].CashierName);
$('#total').html(!tData ? '' : tData[0].TOTL);
$('#fullTransactionDetails').show("blind", options, 500);
}
}
});
我认为我正在做的事情会实现我的目标,但是,由于第二个
tData[0] is undefined
问题,我似乎无法找到答案,并且我正在尝试为我肯定会获取的数据获取数据返回一个空的响应,就我而言,它甚至不应该触及代码的那部分。我对此有点茫然,因此非常感谢您的帮助。
最佳答案
如果您陷入$.ajax
调用的成功处理程序中,则可能会得到一个空的对象常量(如果返回的是JSON dataType)。所以您是null检查失败,因为它实际上不是null-它为空。
以下是可能发生的情况的示例:
$(document).ready(function() {
var x = {};
if (x==null) {
alert("I am null");
} else {
alert(x);
}
if ($.isEmptyObject(x)) {
alert("I am empty");
} else {
alert(x);
}
});
在第一个测试中,空检查将失败,并且您将收到“对象[Object]”的警报。但是第二项测试将会成功,并且您会收到“我是空的”警报。
这是jsFiddle上的链接:http://jsfiddle.net/pcdP2/2/
$ .isEmptyObject()在jQuery 1.4中(根据jQuery API),因此如果您不在该版本上,它将不可用。