jquery - 检查AJAX响应是否为空等问题

标签 jquery ajax

我目前正在尝试检查我收到的响应是否为空。现在我认为可行的方法如下:

 $.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 数据类型)。所以你的空检查失败了,因为它确实不为空——它是空的。

以下是可能发生的情况的示例:

$(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),因此如果您不在该版本上,它将不可用。

关于jquery - 检查AJAX响应是否为空等问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3503014/

相关文章:

javascript - 如何同时使用 ajax 和 php 进行重定向?

php - jquery - 重新加载后隐藏

javascript - 跳出ajax循环

jquery - 在已经渲染的 jquery flot 图上绘制一个新系列

javascript - jQuery Ajax 请求 200 但状态错误

作为字符串的 Javascript 网络错误

javascript - 如何在jquery fullcalendar中通过ajax响应发送日历事件

javascript - 滚动时使用 ajax 加载内容

javascript - XMLHttpRequest为每个请求设置RequestHeader

php - 如果表时间戳已更新,如何仅选择行