Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.02.2016, 16:27
Новичок на форуме
Отправить личное сообщение для alagor Посмотреть профиль Найти все сообщения от alagor
 
Регистрация: 10.02.2016
Сообщений: 2

Прошу помощи, вызов нескольких функций из 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; 
?>
Ответить с цитированием
  #2 (permalink)  
Старый 10.02.2016, 16:39
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

alagor,
У вас одна и та же переменная в обоих запросах:
if (!xmlHttp && typeof XMLHttpRequest != 'undefined') {
  xmlHttp = new XMLHttpRequest();
}

Поэтому ответ на один запрос забивает другой. Сделайте разные
Ответить с цитированием
  #3 (permalink)  
Старый 10.02.2016, 17:35
Новичок на форуме
Отправить личное сообщение для alagor Посмотреть профиль Найти все сообщения от alagor
 
Регистрация: 10.02.2016
Сообщений: 2

Dilettante_Pro, благодарю за подсказку))
даже стыдно что на такой мелочи попался...
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запуск различных функций в зависимости от значения в input artddx Общие вопросы Javascript 1 09.02.2016 17:14
Вызов события для input file ArmagedDance jQuery 4 17.02.2013 10:39
Вызов функций iframe из кода Firefox-расширения Jury Firefox/Mozilla 0 03.05.2011 13:09
Вызов функции печати страницы полученной через AJAX Garik AJAX и COMET 4 02.03.2011 17:05
AJAX, вызов из метода обьекта Logo Общие вопросы Javascript 4 20.06.2009 23:35