jQuery AJAX JSON yanıt, işleme AJAX sonucuna göre veya JSON içeriği için yoklama
Acemi-orta-JavaScript/jQuery bir programcı değilim, somut/yürütülebilir örnekler çok mutluluk duyacağız.
Projemde AJAX JSON da içerik içeren döndüren bir URL ankete kullanarak DOM, ya da bir mesaj eklenmesini gerektirir{ "" : "" } beklemede . durum arka uç hala içeriği ile bir JSON yanıt oluşturma üzerinde çalışıyor olduğunu gösterir. Bu fikir ilk istek için URL tetikler arka uç için başlangıç bina bir JSON yanıt (önbelleğe alınmış), ve sonraki çağrılar kontrol edin eğer bu JSON hazır (hangi durumda sağlanır).
Benim komut, 1:30 dak., 15 saniyelik aralıklarla bu URL ankete ihtiyacım var ve aşağıdakileri yapın:
- Eğer AJAX bir hata sonucu istemek, senaryoyu sonlandırmak.
- AJAX başarılı sonuçlar istemek, ve JSON içeriği içerir{ "" : "" } beklemede . durum yoklama devam ediyor.
- Eğer AJAX isteği başarı ve kullanışlı içeriği JSON içeriği (yani herhangi bir geçerli yanıt dışında . sonuçları ^em>{ "" : "" } beklemede . durum ), sonra da içeriği görüntülemek, yoklama durdurmak ve komut sona erdirmek.
Sınırlı bir başarı ile birkaç yaklaşım denedim, ama olması gerekenden daha kirli olduklarını hissediyorum. Burada ise JSON yanıt kullanılabilir içerik alırsam işini yapan başarılı bir kerede tek bir AJAX isteği yapmak için kullandım iskelet bir fonksiyonu
// make the AJAX request
function ajax_request() {
$.ajax({
url: JSON_URL, // JSON_URL is a global variable
dataType: 'json',
error: function(xhr_data) {
// terminate the script
},
success: function(xhr_data) {
if (xhr_data.status == 'pending') {
// continue polling
} else {
success(xhr_data);
}
},
contentType: 'application/json'
});
}
Ancak, bu işlev, şu anda geçerli bir JSON yanıt kullanışlı içerikli aldığı sürece hiçbir şey yapmaz.
Sadece yorum satırları ne emin değilim. Sanıyorum başka bir işlevi yapmalı yoklama ve ara ajax_
istek() gerektiği gibi, ama bilmiyorum, en şık yolu için ajax_
istek() için iletişim kurmak sonuçları tekrar yoklama çalışması olabilir cevap uygun.
Herhangi bir yardım çok takdir! Bana herhangi bir bilgi olursa haber ver lütfen. Teşekkürler!
CEVAP
Özyinelemeli olarak arama ajax_request için basit bir zaman aşımı kullanabilirsiniz.
success: function(xhr_data) {
console.log(xhr_data);
if (xhr_data.status == 'pending') {
setTimeout(function() { ajax_request(); }, 15000); // wait 15 seconds than call ajax request again
} else {
success(xhr_data);
}
}
Bu çizgi etrafında bir sayaç kontrol sopa ve anketler maksimum sayıda var.
if (xhr_data.status == 'pending') {
if (cnt < 6) {
cnt ;
setTimeout(function() { ajax_request(); }, 15000); // wait 15 seconds than call ajax request again
}
}
Bir uyarı falan koy istemiyorsan hata fonksiyonu olarak bir şey yapmanıza gerek yok. bu hata basit gerçeği çağrıldığını başarı işlevi önlemek ve muhtemelen başka bir anket tetikliyor.
Nasıl js veya jQuery ile ajax isteği i...
Jquery Ajax json Java eklentisi Gönder...
jQuery't ayrıştırma AJAX benim JS...
Nasıl yanıt durumu jQuery kodu almak i...
JSON göndermek için nasıl ajax, DV yer...