如何阻止xmlhttp.open复制整个页面? (ajax livesearch)

时间:2011-02-14 17:42:37

标签: javascript ajax jquery

我正在使用一个简单的“实时搜索”脚本,当用户键入文本框时,该脚本会显示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();

我明白这是因为它在循环中打开了自己但是我不确定我应该在代码中改变什么以避免这种情况。任何帮助将不胜感激,因为我没有通过谷歌找到很多帮助。

这是我的所有代码:

的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 个答案:

答案 0 :(得分:1)

为什么要让代码指向自己?似乎逻辑上有一个只返回所需内容的Web服务。这不像你必须复制代码,只是做一些通用的方法,在整个页面或Web服务中吐出内容。

如果您需要调用同一页面,您始终可以使用正则表达式来删除所需的内容,而不是替换整个页面。