我目前正在尝试检查我得到的回复是否为空.现在我认为将起作用如下:
$.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",500); } } });
我认为我正在做的事情将实现我的目标但是,我似乎无法找到,因为我有第二个问题tData [0]是未定义的,我正在尝试获取某些东西的数据我知道肯定会返回一个空的响应,所以就我而言,它甚至不应该打到代码的那一部分.
我对此感到有点失落所以非常感谢任何帮助.
解决方法
如果你正在进入$.ajax调用的成功处理程序,你可能会得到一个空的对象文字(如果它是一个返回的JSON数据类型).所以你的空检查失败了,因为它确实不是空的 – 它是空的.
以下是可能发生的事情的示例:
$(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 [Object]’的警报.但是第二次测试会成功,你会得到“我是空的”警报.
这是jsFiddle上的链接:http://jsfiddle.net/pcdP2/2/
$.isEmptyObject()在jQuery 1.4中(根据jQuery API),因此如果您不在该版本上,它将无法使用.