Согласно этой ссылке https://stackoverflow.com/questions/12404431/xmlhttp-responsetext-not-display-text/12404599#comment16671053_12404599. У меня есть еще одна проблема с поиском идентификатора div для отображения статуса обновления. У меня есть сотни div id="result", которые ждут кода ответа для выполнения действия: успех || ошибка. И теперь проблема, когда я обновляю любое поле. Изменен только первый div id="result". Итак, как вернуть идентификатор из php и отобразить его в собственном статусе?
<script type="text/javascript">
//auto update
function updateField(nameValue){
var xmlHttp=null;
try{
xmlHttp=new XMLHttpRequest();
}
catch (e){
try{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e){
alert("No AJAX!");
return false;
}
}
xmlHttp.onreadystatechange=function(){
if(xmlHttp.readyState==4){
if (xmlHttp.status==200){
//this will be called after update
var responseText = xmlHttp.responseText;
doSomethingAfterUpdate(responseText);
}
}
}
//this will send the data to server to be updated
xmlHttp.open("GET", 'inc/room_rate_updatez.php?'+ nameValue, true);//return "x" or "y"
xmlHttp.send(null);
}
function doSomethingAfterUpdate(retValFromPHP){
if (retValFromPHP == "x"){
document.getElementById("result").innerHTML = "<img src=\"../images/ico_no.png\" alt=\"X\"/>";
document.getElementById("result").className="error"
}else{
document.getElementById("result").innerHTML = "<img src=\"../images/ico_yes.png\" alt=\"Y\" />";
document.getElementById("result").className="success"
}
}
</script>
Вот HTML:
<table border="1">
<tr id="zebra">
<td>01 Nov 2012</td>
<td id="rate"><div id="result"></div> <input type="text" name="rate|498|6400-5200-4600-5600-4100|0" id="498" value="6400" size="10" onchange="updateField(this.name + '=' + this.value);"/></td>
<td id="rate"><div id="result"></div> <input type="text" name="rate|498|6400-5200-4600-5600-4100|1" id="498" value="5200" size="10" onchange="updateField(this.name + '=' + this.value);"/></td>
<td id="rate"><div id="result"></div> <input type="text" name="rate|498|6400-5200-4600-5600-4100|2" id="498" value="4600" size="10" onchange="updateField(this.name + '=' + this.value);"/></td>
<td id="rate"><div id="result"></div> <input type="text" name="rate|498|6400-5200-4600-5600-4100|3" id="498" value="5600" size="10" onchange="updateField(this.name + '=' + this.value);"/></td>
<td id="rate"><div id="result"></div> <input type="text" name="rate|498|6400-5200-4600-5600-4100|4" id="498" value="4100" size="10" onchange="updateField(this.name + '=' + this.value);"/></td>
</tr>
<tr id="zebra">
<td>02 Nov 2012</td>
<td id="rate"><div id="result"></div> <input type="text" name="rate|499|6200-5200-4600-5600-4100|0" id="499" value="6200" size="10" onchange="updateField(this.name + '=' + this.value);"/></td>
<td id="rate"><div id="result"></div> <input type="text" name="rate|499|6200-5200-4600-5600-4100|1" id="499" value="5200" size="10" onchange="updateField(this.name + '=' + this.value);"/></td>
<td id="rate"><div id="result"></div> <input type="text" name="rate|499|6200-5200-4600-5600-4100|2" id="499" value="4600" size="10" onchange="updateField(this.name + '=' + this.value);"/></td>
<td id="rate"><div id="result"></div> <input type="text" name="rate|499|6200-5200-4600-5600-4100|3" id="499" value="5600" size="10" onchange="updateField(this.name + '=' + this.value);"/></td>
<td id="rate"><div id="result"></div> <input type="text" name="rate|499|6200-5200-4600-5600-4100|4" id="499" value="4100" size="10" onchange="updateField(this.name + '=' + this.value);"/></td>
</tr>
<tr id="zebra">
<td>03 Nov 2012</td>
<td id="rate"><div id="result"></div> <input type="text" name="rate|500|6200-5200-4500-5600-4100|0" id="500" value="6200" size="10" onchange="updateField(this.name + '=' + this.value);"/></td>
<td id="rate"><div id="result"></div> <input type="text" name="rate|500|6200-5200-4500-5600-4100|1" id="500" value="5200" size="10" onchange="updateField(this.name + '=' + this.value);"/></td>
<td id="rate"><div id="result"></div> <input type="text" name="rate|500|6200-5200-4500-5600-4100|2" id="500" value="4500" size="10" onchange="updateField(this.name + '=' + this.value);"/></td>
<td id="rate"><div id="result"></div> <input type="text" name="rate|500|6200-5200-4500-5600-4100|3" id="500" value="5600" size="10" onchange="updateField(this.name + '=' + this.value);"/></td>
<td id="rate"><div id="result"></div> <input type="text" name="rate|500|6200-5200-4500-5600-4100|4" id="500" value="4100" size="10" onchange="updateField(this.name + '=' + this.value);"/></td>
</tr>
<tr id="zebra">
<td>04 Nov 2012</td>
<td id="rate"><div id="result"></div> <input type="text" name="rate|501|6200-5200-4600-5400-4100|0" id="501" value="6200" size="10" onchange="updateField(this.name + '=' + this.value);"/></td>
<td id="rate"><div id="result"></div> <input type="text" name="rate|501|6200-5200-4600-5400-4100|1" id="501" value="5200" size="10" onchange="updateField(this.name + '=' + this.value);"/></td>
<td id="rate"><div id="result"></div> <input type="text" name="rate|501|6200-5200-4600-5400-4100|2" id="501" value="4600" size="10" onchange="updateField(this.name + '=' + this.value);"/></td>
<td id="rate"><div id="result"></div> <input type="text" name="rate|501|6200-5200-4600-5400-4100|3" id="501" value="5400" size="10" onchange="updateField(this.name + '=' + this.value);"/></td>
<td id="rate"><div id="result"></div> <input type="text" name="rate|501|6200-5200-4600-5400-4100|4" id="501" value="4100" size="10" onchange="updateField(this.name + '=' + this.value);"/></td>
</tr>
</table>
Теперь вопросы:
- Как изменить "XXX" в соответствии с responseText из PHP в "document.getElementById("resultXXX").innerHTML"?
- Я хотел бы назвать div id="rate[$i]" и обновить, а затем отправить обратно, когда обновление будет выполнено успешно.
Пожалуйста, предложите.