Как остановить xmlhttp.open дублирование всей страницы?(Ajax LiveSearch) - PullRequest
0 голосов
/ 14 февраля 2011

Я использую простой скрипт «живого поиска», который отображает результаты из базы данных MySQL, когда пользователь вводит текстовое поле. Это прекрасно работает, если Javascript указывает на совершенно отдельную страницу, но мне нужно, чтобы он указывал на ту же страницу. К сожалению, когда я пытаюсь сделать это, страница дублируется внутри себя, поскольку результаты генерируются.

Это работает как ожидалось:

    Document called: "test.php" containing JavaScript below and test2.php containing the PHP code

    xmlhttp.open("GET","test2.php?livesearch="+str,true);
    xmlhttp.send();

Это создает страницу на странице:

    Document called: "test.php" containing both the JavaScript and PHP code below

    xmlhttp.open("GET","?livesearch="+str,true);
    xmlhttp.send();

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

Вот весь мой код:

Javascript

function showResult(str)
{
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("livesearch").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET","&livesearch="+str,true);
xmlhttp.send();
}

Код PHP

if(isset($_GET['livesearch'])) {liveSearch();}

function liveSearch() {
    $q=$_GET["livesearch"]; 
    $sqlQuery = "SELECT * FROM something WHERE something LIKE '%" . $q . "%' ;
    etc etc etc
}

1 Ответ

1 голос
/ 14 февраля 2011

Почему вы хотите, чтобы код указывал на себя?Кажется логичным иметь веб-сервис, который будет возвращать только тот контент, который необходим.Вы не должны дублировать код, просто сделайте какой-нибудь общий метод, который выплевывает содержимое на полной странице или в веб-сервисе.

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

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