2010-08-17 52 views
8

我目前正在尝试检查我收到的响应是否为空。现在,下面我想将工作是:检查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我试图获取数据的东西,我知道肯定会返回一个空的响应,所以就我而言,它甚至不应该击中那部分代码。

我在这有点损失,所以任何帮助非常感谢。

回答

13

如果您陷入$.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); 
    } 
}); 

在第一个试验中,空检查将失败,你会得到“对象[对象]”的警报。但第二次测试会成功,你会得到'我是空的'警报。

这里有一个链接上的jsfiddle:http://jsfiddle.net/pcdP2/2/

$ .isEmptyObject()是在jQuery的1.4(每jQuery的API),所以如果你没有该版本将无法使用。

+0

它为我工作。 – 2013-05-14 05:49:06

+0

非常感谢:) – 2013-05-14 05:49:34

1

我相信成功会被传递给一个非空字符串,即使没有数据返回 - 这样,你可能需要检查TDATA ==“”(除了检查TDATA == NULL)

+2

在某些情况下,比较对null的响应失败。 '$ .isEmptyObject($ response)'做了诀窍。 – Sobiaholic 2013-08-02 22:03:41

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。

0

我建议你转换返回的结果转换成字符串,然后开始验证,BCOS阿贾克斯可能会返回一个certaing数据类型,它ü不能验证: 试试这个

succes:function(resultvalue) 
    { 
     var result = resultvalue.toString(); 
    if(result=='') 
    { 
     alert('the result is empty'); 
    } 
    else 
    { 
       alert('the result is not empty'); 
    } 
    } 
6

什么工作对我来说是:

if (data.length != 0) 
2

修整为我工作的空白区域的数据。

jQuery.get(url,{parameters},function(data){ 
data=data.trim();      

     if (data) {      
       alert('Data available') 
     } else {       
      alert('Empty') 
     }      
});