Условно назову блоками.
Блок 1:
function callServer_protect_ov() {
var protect_ov1 = document.getElementById("protect_ov1").value;
var protect_hand = document.getElementById("protect_hand").value;
var url = "summ_protect_ov.php?protect_ov1=" + escape(protect_ov1) +"&protect_hand=" + escape(protect_hand);
xmlHttp.open("GET", url, true);
xmlHttp.onreadystatechange = updatePage_protect_ov;
xmlHttp.send(null);
}
if (!xmlHttp && typeof XMLHttpRequest != 'undefined') {
xmlHttp = new XMLHttpRequest();
}
function updatePage_protect_ov() {
if (xmlHttp.readyState == 4) {
var response_protect_ov = xmlHttp.responseText;
document.getElementById("protect_ov").value = response_protect_ov;
}
}
Блок2: (идентичен первому):
function callServer_protect_zv() {
var protect_zv1 = document.getElementById("protect_zv1").value;
var protect_hand = document.getElementById("protect_hand").value;
var url = "summ_protect_zv.php?protect_zv1=" + escape(protect_zv1) +"&protect_hand=" + escape(protect_hand);
xmlHttp.open("GET", url, true);
xmlHttp.onreadystatechange = updatePage_protect_zv;
xmlHttp.send(null);
}
if (!xmlHttp && typeof XMLHttpRequest != 'undefined') {
xmlHttp = new XMLHttpRequest();
}
function updatePage_protect_zv() {
if (xmlHttp.readyState == 4) {
var response_protect_zv = xmlHttp.responseText;
document.getElementById("protect_zv").value = response_protect_zv;
}
}
Вызов происходит из input’ов:
<input type="text" name="protect_ov2" id="protect_ov2" onChange="callServer_protect_ov();" />
<input type="text" name="protect_zv2" id="protect_zv2" onChange="callServer_protect_zv();" />
В php происходит суммирование, возвращенное значение падает в соответствующие инпуты:
<input type="text" name="protect_ov" id="protect_ov" readonly />
<input type="text" name="protect_zv" id="protect_zv" readonly />
……
В таком виде все работает, т.е. при внесении значения в поле ввода наблюдаем результат сложения.
Чего пытаюсь добиться: чтобы при воде значения в ОДНОМ инпуте данные записались не в один а в два (и более - код сократил на кол-во однотипных строк чтобы не загромождать), т.е. что-то вроде
<input type="text name="protect_hand" id="protect_hand" onChange="callServer_protect_ov(); callServer_protect_zv(); " />
Или запихать несколько функций в одну и обращаться к ней – результат получил тот же…
В таком варианте, естественно, происходит игнор функции updatePage_protect_ov и результате видим результат только в последнем поле.
Пробовал вместо ссылки на функцию xmlHttp.onreadystatechange = updatePage_protect_ov; сразу вызывать ее
xmlHttp.onreadystatechange = function updatePage_protect_ov (){
…
}
В отладчике вижу, как строка после обращения к функции updatePage_protect_ov сразу перескакивает на закрывающую скобку и уходит на отработку callServer_protect_zv (это уже отрабатывается до конца.)
Что-то я недопонимаю и в чем загвоздка никак не могу решить...
Прошу помощи)
p.s. подумал, что возможно стоит увидеть php чтобы понять что на сервере делается и какие данные получаем, пример ниже:
<?php
$protect_ov1='';
$protect_ov2='';
$protect_hand='';
if(isset($_GET['protect_ov1'])){ $protect_ov1 = $_GET['protect_ov1']; }
if(isset($_GET['protect_ov2'])){ $protect_ov2 = $_GET['protect_ov2']; }
if(isset($_GET['protect_hand'])){ $protect_hand = $_GET['protect_hand']; }
$protect_ov = $protect_ov1 + $protect_ov2 + $protect_hand;
echo json_encode($protect_ov);
exit;
?>