Checking to see if AJAX response is empty and other problems

I'm currently trying to check if the response I'm getting is empty. Now what I think will work is below:

 $.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);
                }
            }
        });

I think what I'm doing will achieve what I'm aiming for however, I can't seem to find out as I'm having a second issue of tData[0] is undefined and I'm trying to fetch data for something that I know will definately return an empty response, so as far as I'm concerned, it shouldn't even hit that part of the code.

I'm at a bit of a loss with this so any help is greatly appreciated.

8
задан LiamGu 17 August 2010 в 13:40
поделиться

2 ответа

Если вы попали в обработчик успеха вашего $.ajax , вы, вероятно, получаете обратно литерал пустого объекта (если возвращается JSON dataType). Итак, ваша проверка на нулевое значение не выполняется, потому что на самом деле оно не нулевое - оно пустое.

Вот пример того, что может происходить:

$(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);
    }
});

В первом тесте проверка на null завершится неудачно, и вы получите предупреждение «object [Object]». Но второй тест будет успешным, и вы получите предупреждение «Я пуст».

Вот ссылка на него на jsFiddle: http://jsfiddle.net/pcdP2/2/

$ .isEmptyObject () находится в jQuery 1.4 (согласно jQuery API), поэтому не будет быть доступным, если вы не используете эту версию.

15
ответ дан 5 December 2019 в 06:52
поделиться

Я считаю, что функции успеха будет передана ненулевая строка, даже если данные не возвращены, поэтому вам может потребоваться проверить tData == '' (в дополнение к проверке tData == null)

1
ответ дан 5 December 2019 в 06:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: