检查AJAX响应是否为空以及其他问题

Lia*_*mGu 8 ajax jquery

我目前正在尝试检查我得到的回复是否为空.现在我认为将起作用如下:

 $.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);
                }
            }
        });
Run Code Online (Sandbox Code Playgroud)

我认为我正在做的事情将实现我的目标但是,我似乎无法找到,因为我有第二个问题tData[0] is undefined而且我正在尝试获取我知道肯定会返回的数据一个空的响应,所以就我而言,它甚至不应该打到代码的那一部分.

我对此感到有点失落所以非常感谢任何帮助.

Dav*_*ter 15

如果你陷入$.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);
    }
});
Run Code Online (Sandbox Code Playgroud)

在第一个测试中,空检查将失败,您将收到'object [Object]'的警报.但是第二次测试会成功,你会得到'我是空的'警报.

这是jsFiddle上的链接:http://jsfiddle.net/pcdP2/2/

$ .isEmptyObject()在jQuery 1.4中(根据jQuery API),因此如果您不在该版本上,它将无法使用.


use*_*003 6

对我有用的是:

if ( data.length != 0 )
Run Code Online (Sandbox Code Playgroud)