Yanlış yere yönlendiriliyorsunuz - bazen

2 Cevap php

Ben harici bir sayfa posta için her 5 saniyede denetleyen bir javascript setInterval var, ben giriş yapın veya form istek dışarı gider gibi aynı anda göndermek tıklarsanız, ben bazen kendimi bir Y veya N bakarak bulmak bazen bulma yaşıyorum bunun yerine gitmek istedim gerçek bağlantının (ne benim JS kesmek oldu).

Nasıl biri bu hata ayıklama yapar? Ben kundakçı ile firefox kullanıyorum, benim app javascript ile PHP kullanıyor.

EDIT: Birisi sayfaları değişiyor ve java aynı anda çalıştığı zaman onComplete java tarafından kaçırılmış ediliyor sanki, ve kullanıcı oturum açmadan olduğu gibi sadece döker ... O sadece olur.

Kendiniz için bu görmek istiyorsanız EDIT 2:, benim siteyi ziyaret edin ve bir hesap oluşturmak ve (üstleri yapmak için 2-3 dakika) kayıt sürecinden geçmesi gerekir, web sitesi {[(1 )]} ve beta şifre goldfish. Ne yapmak istediğiniz posta kontrol talebini kapalı gönderir gibi giriş olduğunu. Onun gibi bir şey iptal veya dışarı geri arama ya da bir şey atmak için java söylemek gerekir. Sen (de o 5 saniye her istek ekler), isteklerini her 5 saniyede bir görmelisiniz ama göreceksiniz. It may take a couple try's or some luck, but it is reproducible.

Ben bir şey eksik gibi görünüyor Eğer bu (i tüm attılar düşünüyorum) çalışan javascript, bana bildirin. Ben de bir htnl giriş html javascript kontrolleri yayınlanmıştır ...

<input id="hasMail" type="hidden" value="y">

<script type='text/javascript'>
    mailTimer = setInterval("checkMail();", 10000);

function checkMail()
{
	// should we check the mail now?
	if ($('hasMail').value == "y")
	{
		// remove mail new mail alert (mail-check.php returns y or n
		new Ajax.Request('mail-check.php', 
		{ 
			method: 'post', 
			postBody: '',
			onComplete: checkMailNotify 
		});
	}
}

    function checkMailNotify(req)
    {
    	if (req.responseText.length > 5)
    	{
    		$('hasMail').value = "n";
    		clearInterval (mailTimer);
    		return;
    	}

    	if (req.responseText == "y")
    	{
    		$('hasMail').value = "n";
    		$('topMessage').update('<a href="/mail-inbox.php">You have new mail...</a>');
    		$('alertBox').appear();
    		clearInterval (mailTimer);
    	}
    	else
    	{
    		clearInterval (mailTimer);
    		mailInterval = mailInterval + 5000;
    		mailTimer = setInterval("checkMail();", mailInterval);
    	}
    }

</script>

2 Cevap

Ben bu bir çözüm hiçbir yerde yakın olduğunu biliyorum, ama bu bile 30 saniye gibi bir şey, 5 saniye aralığını artırmak için yardımcı olacaktır. Ben önce mailservers ile iş yaptık, ve biz sık sık insanlar çok kısa aralıklarla kendi iphone yanı sıra masaüstü posta istemcisi ping sunucu örneğin olurdu sorunlarına geldi. Bunun nedeni kilitleri (onlara) başarısızlıkları kafa karıştırıcı neden olacaktır.

Yani evet, mesajlar için 5 saniye (bu sohbet değil, sadece iletileri gibi görünmüyor doğru mu?) Çok hızlıdır. Bunu yaparsanız en iyi o zaman sorun çok daha az olur eğer hepsi. Ancak bu olabilir o korkunç bilgiye sahip olacaktır.

Soruna bir çözüm çabası olarak almayın lütfen. Sadece bir öneri.

Ben ne oluyor sayfaları değiştirirken, posta-check.php gelen verileri aynı anda ağdan geri geliyor yeni isteği ile çatışan olduğunu düşünüyorum. Ben olası bir çözüm, bir sayfayı değiştirmek ya da bir formu göndermek her ne zaman yeni verileri yükledikten sonra yeniden etkinleştirmek, setInterval devre dışı bırakmak için olduğunu düşünüyorum.

Gibi bir şey:

<input type="button" onClick="clearInterval('mailTimer'); this.submit()" />
...