Ben müşterilerine e-posta gönderen bir sayfa var. Aynı anda tüm e-postalar göndermek edememek kolaylık sağlamak için sayfanın alt kısmında bir send all
düğmesi vardır. Sorun o hiç kötü ya da inşaat olduğunu. Bu sayfayı yeniden çizilmesi değildir veya tüm Ajax çağrıları işlemek için yönetmek değil ya.
İşte JavaScript ...
function ajaxemail(element,name,email,bonus)
{
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById(element).innerHTML= xmlhttp.responseText
//document.getElementById(element).style.display = 'none'
//document.getElementById(element).style.display = 'block'
//alert(xmlhttp.responseText)
}
}
xmlhttp.open("POST",<?php echo "\"$_SERVER[PHP_SELF]\"";?>,true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send("emailto=true&name="+name+"&email="+email+"&bonus="+bonus);
}
function sendall(info)
{
document.getElementById('sendallmails').disabled = true
document.getElementById('sendallmails').value = 'Sending mails...'
length = info.length
for( i=0; i < length; i++)
{
ajaxemail(info[i][0],info[i][1],info[i][2],info[i][3])
}
}
Eğer yardımcı olur dizisi info
inşa edilmiş ve daha sonra fonksiyon denir ve nerede, burada ...
echo "<script>\nvar email_info_array = new Array()\n";
$j = 0;
while($row = mssql_fetch_row($rs))
{
echo "email_info_array[$j] = new Array('sendlink$j','$row[1]','$row[2]','$row[4]')\n";
++$j;
}
echo "</script>\n\n";
echo "<input type=\"button\" name=\"sendallmails\" id=\"sendallmails\" value=\"Send all Mails\" onclick=\"javascript:sendall(email_info_array)\">\n";
Bir seferde veya bir çağrıldığında o çalışıyor, çünkü başarısızlık ajaxemail()
fonksiyonu tarafından çağrılan sayfasında değildir. Bu işe yaramazsa o döngü tarafından çağrıldığında bu. Bu döngü içinde son bir veya iki öğe yapmak gibi görünüyor ... ya ben (örneğin yeniden boyutlandırmak gibi) yeniden çizmek için tarayıcıyı zorlayan şey yaparsam arasında bazı yapabilir.
Ben döngü o yürütülmesine test etmenin bir yolu olarak bir uyarı eklerseniz en azından başarıyla her tekrarında Ajax arama çalışır çalışan (ama basın zorunda olan ok
birçok uyarıları!
Ben bir şekilde zorla döngünün her tekrarında tarayıcı DOM yenilemek gerekir. Sayfa daha az duyarlı hale gelirse önemli değil (ama bunun yerine tamamen tepkisiz hale vermedin)
(Ben bunu FF çalışma kez diğer tarayıcılarda test edecek) son Firefox'ta test ediyorum