Sunucu tarafında (jquery) bir ajax sorgusu iptal etmek nasıl?

2 Cevap php

Garip bir soru gibi geliyor, ama bu böyle bir şey var ki:

$.post( "/myajax.php",
        { "param1": value1, "param2": value2 },
        function( data, status ) {
            if( status == "success" ) {
               $("#someid").html( data );
            }
        }, "html" );

Myajax.php yapması gereken ne yapıyor olsa da, o #someid herhangi bir değişiklik yapmanız gerekmez karar verir. Sadece dönerse, someid eleman blanked, ama yalnız bırakmak istiyorsun. Nasıl böyle bir şekilde php sorgu dönüş olduğunu status != "success"?

2 Cevap

Iade verileri kontrol etmek kolay olmaz mıydı?

$.post( "/myajax.php", { 
    	"param1": value1, 
    	"param2": value2 
   }, function( data, status ) {
       if( data != "" ) {
           $("#someid").html( data );
       }
   }, 
   "html" 
);

ajax çağrıları başarı olarak herhangi bir 200 OK tedavi. gibi Eğer ajax bir hata tetiklemek için PHP script başka bir şey dönmek olabilir.

here daha uygun bir şey seçmek istedim durumda diğer bazı durum kodları vardır.

edit: i mutlaka bu yaklaşım ile aynı fikirde değilim, ama yine durum mesajı (http durum) yerine yanıt gövdesi üzerinde faaliyet daha doğru eğilerek değilim.

benim düşüncelerimi sen bir kaynak güncelleme Bahsedilen biri olarak, bir sonrası işlem vardır. bir makul iki ("başarı" şartlarında) gerçekleşmesi, iki şeyden birini bekleyebilirsiniz varsayabiliriz:

  1. 200 OK içerik sorunu olmadan yayınlanmıştır demektir ve çıkan yanıt, genellikle yeni içerik göstermektir. ajax yöntemi UI güncelleştirmek için tepki vücut almak için izin vererek bu davranışı "zorlar".

  2. (beklendiği gibi istek işlendi gibi) güncelleştirme yapılması gerekmez bir senaryoda, bir 200 OK de gayet iyi, ama bu isteği yerine anlaşılacağı gibi belki de 204 No Content, iyidir , ancak görünümün herhangi bir değişiklik gereklidir. Ben (yok olduğu) tepki vücut görmezden ve veya benzer "hiçbir değişiklik gerekli olduğunu" söylemek için (durumu hakkında 204? Güncelleme UI çalışabilir gibi bu, hem de ajax çağrısı ile daha inline olduğuna inanarak doğru eğilerek ediyorum )