2010-08-17 56 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') 
     }      
});