createRequestObject в цикле
Вем привет. Задача отправить запрос и получить ответ в цикле, цикл может быть разным, вот код:
for (i=0; i<5; i++) {
var id = 'id_'+i;
var id_send = document.getElementById(id).value;
var id_result = 'result_'+i;
var http = createRequestObject();
if( http ) {
http.open('get', 'name.php?send_id='+id_send);
http.onreadystatechange = function () {
if(http.readyState == 4) {
document.getElementById(id_result).innerHTML=http.responseText;
return;
}
}
http.send(null);
} else {
document.location = 'index.php';
}
}
результат вставляется в id='id_result' в таблицу, но проблема в том, что результат получает только последний, и заполняется результат в таблице только последняя строка :( Где грабли??? |
Никто не знает???
|
Оберните всё что в цикле в функцию
|
Нифига чет не получается, ошибки разные бъет, может напишите куда и как??
Вот весь код:
echo "<script language='javascript'>
var num = ".$rows.";
for (i=0; i<num; i++) {
id = 'distribution_id_'+i;
distribution_id = document.getElementById(id).value;
id_result = 'result_send_'+i;
http = createRequestObject();
http.function(){
if(http.readyState == 4) {
if(http.status == 200) {
document.getElementById(id_result).innerHTML=http.responseText;
}
}
http.open('get', 'func.php?send_distribution='+distribution_id, true);
http.send(null);
}
}
</script>";
|
|
Я уже всю голову сломал :( Уже все перепробовал что только можно
Методом alert(i); выяснил, что до строки http.onreadystatechange i выдает согласно циклу, а уже внутри http.onreadystatechange выдает номер последнего цикла
window.onload = function(){
for (i=0; i<4; i++) {
id = "distribution_id_"+i;
distribution_id = document.getElementById(id).value;
id_result = "result_send_"+i;
var http = createRequestObject();
if( http ) {
http.open("get", "func.php?send_distribution="+distribution_id, true);
/* ЗДЕСЬ alert(i) выдает номер согласно циклу от 0 до 4 */
http.onreadystatechange = function () {
/* ЗДЕСЬ alert(i) выдает номер 4 */
if(http.readyState == 4) {
document.getElementById(id_result).innerHTML=http.responseText;
return;
}
}
http.send(null);
} else {
document.location = "index.php";
}
}
}
:help: :help: :help: :help: :help: :help: :help: |
Цитата:
http.open("get", "func.php?send_distribution="+distribution_id, false); |
Цитата:
|
Цитата:
|
devote,
Значит надо переделать, пусть пойдёт читать как. |
| Часовой пояс GMT +3, время: 19:21. |