Прошу помощи, вызов нескольких функций из input, ajax
Условно назову блоками.
Блок 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; ?> |
alagor,
У вас одна и та же переменная в обоих запросах: if (!xmlHttp && typeof XMLHttpRequest != 'undefined') { xmlHttp = new XMLHttpRequest(); } Поэтому ответ на один запрос забивает другой. Сделайте разные |
Dilettante_Pro, благодарю за подсказку)):dance:
даже стыдно что на такой мелочи попался... :p |
Часовой пояс GMT +3, время: 18:07. |