ajax запрос срабатывает только один раз из цикла

Тема в разделе "JavaScript", создана пользователем sunyang, 27 окт 2011.

Модераторы: ZiX
  1. sunyang

    sunyang

    Регистр.:
    25 апр 2009
    Сообщения:
    444
    Симпатии:
    30
    Есть несколько ячеек, которые нужно заполнить ихними айдишниками при загружке стараницы:
    HTML:
    
    <tr>
        <td id='votestatus1' onClick="vote('1')">стол 1</td>
        <td id='votestatus2'onclick="vote('2')">стол 2</td>
      </tr>
    вот JS скрипт:

    Код:
    	for(var id = 1; id < 3; id++) { 
    	function loadtd(id) {
    	var req = getXmlHttp()  
    
    req.onreadystatechange = function() {  
    	if (req.readyState == 4) { 
    	if(req.status == 200) { 
    document.getElementById('votestatus'+id).innerHTML = req.responseText;
    	}
    	}
    	}
    
    req.open('GET', '2.php?id='+id, true);  
    req.send(null);
    document.getElementById('votestatus'  + id).innerHTML = 'загрузка...';
    	}
    	loadtd(id)
    	 }
    
    обработчик 2.php :

    PHP:
    $id $_GET['id']; 
    echo 
    $id;
    Но айдишником заполняется только первый элемент. Как быть? Как запустить запрос несколько раз?
     
  2. sunyang

    sunyang

    Регистр.:
    25 апр 2009
    Сообщения:
    444
    Симпатии:
    30
    C этим я разобрался. А как сделать, чтобы из обработчика 2.php передать параметр в 1.php не только из echo, но и из какой-нибудь переменной? Мне нужно возвратить обратно несколько значений сразу...
     
  3. polyetilen

    polyetilen Заблокирован

    Регистр.:
    10 авг 2006
    Сообщения:
    814
    Симпатии:
    474
    чтоб возвратить несколько значений, например возвращать не просто текст, а javascript. Тогда в файле 2.php будет возвращатся яваскрипт с двумя переменными
    PHP:
    echo "info='информация';count='5';"
    дальше где было
    Код:
    if(req.status == 200){ 
        document.getElementById('votestatus'+id).innerHTML = req.responseText;
    }
    
    теперь надо перевести полученный текст в яваскрипт, это делает eval, после этого можно будет использовать переменные, так
    Код:
    if(req.status == 200){
        eval(req.responseText);
        document.getElementById('votestatus'+id).innerHTML = 'info:'+info+' count:'+count;
    }
    
     
    sunyang нравится это.