2010-08-17 16 views
8

boş ve diğer sorunlar olmadığını görmek için kontrol ediliyor. Şimdi ne işe yarayacak aşağıdaki gibidir: AJAX yanıtı Şu anda ben alıyorum yanıtı boş olup olmadığını kontrol etmek çalışıyorum

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

ben, ben ikinci bir sorun yaşıyorum olarak öğrenmek için görünmüyor ne ben ancak hedefliyor ettiğimi başaracaktır yaptığımı sanıyorlar tData[0] is undefined ve ben kadarıyla bana kalırsa, hatta kod kısmını dövmemeliydin, ben kesinlikle boş bir yanıt dönecektir biliyorum şey verileri getirilecek çalışıyorum.

Bu yüzden herhangi bir Yardım büyük takdir ile bir kayıp biraz önündeyim.

cevap

13

Eğer $.ajax aramanın başarı işleyicisi düşmekten ediyorsanız, muhtemelen (bu eğer bir JSON dataType iade edilen) boş bir nesne değişmezi geri alıyoruz. Yani null çek değilsiniz çünkü gerçekten boş değil - boş.

Burada söz konusu olabilir ne örnek verilmiştir: İlk testte

$(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 denetimi başarısız olur ve 'nesne [Nesne]' bir uyarı alırsınız. Ama ikinci test başarılı olacak ve 'ben boş' uyarısını alacaksınız.

İşte jsFiddle üzerinde kendisine bir bağlantı: http://jsfiddle.net/pcdP2/2/

$ .isEmptyObject() (jQuery API başına) jQuery 1.4 olduğunu, bu yüzden bu sürümün değilsek o mevcut olmayacaktır. doğru boş bir yanıtı tespit

$.ajax({url:'a url', 
dataType:'html', 
success: foo 
}); 

function foo(data) { 
    if (data && data != " ") { 
    console.log("response was empty"); 
    } 
} 

Ne veri veya $ .isEmptyObject (veri):! Bu durumu karşılaştığında

+0

Benim için çalıştı. –

+0

Çok teşekkürler :) –

1

Ben hiçbir veri döndürdü bile, başarı işlevi boş olmayan bir dize geçeceğine inanıyorum - öyleyse,

(TData == null kontrol ek olarak) '' == TData kontrol etmek gerekebilir
+2

. $ .isEmptyObject ($ response) 'hile yaptı. – Sobiaholic

0

Garibi ben bu karşılaştırma çalıştığını gördük. JQuery 1.7.1 kullanıyorum. ajax u doğrulamak olamaz bir certaing veri türü döndürüyor olabilir bcos önermek

0

, sonra doğrulayarak başlar bir dizeye dönüş sonucu dönüştürmek: benim için çalıştı ne bu

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

oldu deneyin:

beyaz alanlar için verileri Kırpma
if (data.length != 0) 
2

benim için çalıştı. boş bir yanıt başarısız karşılaştıran Bazı durumlarda

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

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