|
|
|
| Доброго времени суток.
Проблема с Ajax.
Есть javascript, который обрабатывает все выбранные чебкоксы. А затем его значение с помощью цикла отправляет в php. Не могу никак понять, как можно на лету получать результат php скрипта, которому отправляется значение чекбоксов. В алерте окна выводится всего один результат, а именно последнего выбранного чекбокса. Нужно выводить именно по очереди, а не все заключённые в массив значения чекбокса.
В переменной http содержится созданный XMLHttpRequest, поэтому не вижу смысла писать его код.
Javascript код
function parser(str){
// В переменной str содержится массив значений чекбоксов
for (i = 0; i < str.length; i++) {
if(str[i].checked == true ){
if(str[i].value !='' ){
var url='/test.php?check='+str[i].value+'&test=true'+"&rand="+Math.random();
http.open('GET', url ,true);
http.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
http.onreadystatechange = parser_otvet(http);
http.send(null);
}
}
}
}
function parser_otvet(http) {
if(http.readyState == 4){
var response = http.responseText;
alert(response);
}
}
|
Php код test.php
<?php
echo $_GET['check'];
?>
|
| |
|
|
|
|
|
|
|
для: fiper
(12.12.2009 в 21:20)
| | Проблему решил с помощью функции setTimeout , между обращениями к циклу. | |
|
|
|
|
|
|
|
для: fiper
(13.12.2009 в 00:18)
| | фу зачем цикл при отправке запросов? ужос..
не легче отправить массив? | |
|
|
|
|
|
|
|
для: fiper
(12.12.2009 в 21:20)
| |
function parser(str){
// В переменной str содержится массив значений чекбоксов
var vals = [];
for (i = 0; i < str.length; i++)
if(str[i].checked == true )
if(str[i].value !='' )
vals.push(str[i].value);
if(vals) {
var url='/test.php?check='+vals.join(":")+'&test=true'+"&rand="+Math.random();
http.open('GET', url ,true);
http.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
http.onreadystatechange = parser_otvet(http);
http.send(null);
}
}
|
<?
$vals = explode(":", $_GET['check']);
print_r($vals);
|
| |
|
|
|
|
|
|
|
для: sl1p
(13.12.2009 в 02:05)
| | Я же написал, что не проще, или вы не читали первый пост? Php скрипт который имеется очень большой с php+ mysql , может выполняться от 1 до 10 минут, для каждого значения чекбокса. Нужно получать результат сразу после прохождения одного значения в цикле , а если отправить массив, то ждать придётся фиг знает сколько времени для получения результата.
Я думаю вы поняли? Прошли одно значение например 1, выводим результат php скрипта в <div> и т.д, до получения полного результата.Проблему решил. | |
|
|
|
|
|
|
|
для: fiper
(13.12.2009 в 13:23)
| | ну да, но мне кажется это больно:) | |
|
|
|