我目前正在尝试检查我得到的回复是否为空。现在我认为可行的是:
$.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
并且我正在尝试获取数据对于我知道肯定会返回空响应的内容,所以就我而言,它甚至不应该触及代码的那一部分。
我对此感到有点失落,所以非常感谢任何帮助。
答案 0 :(得分:14)
如果你正在进入$.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),因此如果您不在该版本上,它将无法使用。
答案 1 :(得分:6)
对我有用的是:
if ( data.length != 0 )
答案 2 :(得分:2)
修剪白色空间的数据对我有用。
jQuery.get(url,{parameters},function(data){
data=data.trim();
if (data) {
alert('Data available')
} else {
alert('Empty')
}
});
答案 3 :(得分:1)
我相信成功函数将被传递一个非空字符串,即使没有返回数据 - 所以,你可能需要检查tData ==''(除了检查tData == null)
答案 4 :(得分:0)
奇怪的是,当遇到这种情况时,我发现这种比较有效:
$.ajax({url:'a url',
dataType:'html',
success: foo
});
function foo(data) {
if (data && data != " ") {
console.log("response was empty");
}
}
数据或$ .isEmptyObject(数据)都没有正确识别出空白响应。我使用的是jQuery 1.7.1。
答案 5 :(得分:0)
我建议您将返回结果转换为字符串然后开始验证,bcos ajax可能会返回您无法验证的certaing数据类型: 试试这个
succes:function(resultvalue)
{
var result = resultvalue.toString();
if(result=='')
{
alert('the result is empty');
}
else
{
alert('the result is not empty');
}
}