Почему только одна из этих функций будет работать одновременно? - PullRequest
1 голос
/ 08 мая 2011

Даже если я удалю операторы if, одновременно будет работать только одно из следующих действий. Чтобы заставить первое работать, я должен закомментировать второе.

<?
if(isset($_POST['region'])){
echo "<script> showRecords('".$_POST['region']."','region','country') </script>";}
if(isset($_POST['country'])){
echo "<script> showRecords('".$_POST['country']."','country','provice') </script>";}
?>

Сценарий ссылается на это:

function showRecords(str,column,nextDiv)
{
if (str=="")
  {

  document.getElementById(nextDiv).innerHTML="";
  return;
  }
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {

    document.getElementById(nextDiv).innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET","get"+column+".php?"+column+"="+str,true);
xmlhttp.send();
}

Сценарий приводит к очень простому набору страниц, на которых перечисляются некоторые значения на основе некоторой информации $ _GET.

Я просто не могу понять, почему он позволяет мне выполнять только один из этих сценариев одновременно. Я даже пытался клонировать функцию для showRecords2, и она все еще будет выполнять только showRecords или showRecords2.

1 Ответ

5 голосов
/ 08 мая 2011

Заменить xmlhttp=new XMLHttpRequest() на var xmlhttp=new XMLHttpRequest(). Обратите внимание на добавленное ключевое слово var . xmlhttp становится глобальной переменной области видимости и перезаписывается новыми значениями / аргументами / параметрами каждый раз, когда вы делаете запрос, например, вызов showRecords дважды, пока первый все еще делает что-то, а второй вызов перезаписывает его.

Не забудьте указать все свои переменные на уровне функций, чтобы избежать перезаписи, если только они не будут использованы в глобальной области видимости. Отладка такого рода проблем занимает много времени, особенно когда вы не знаете, где что-то найти. Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...