Javascript 如何停止xmlhttp.open复制整个页面?(ajax实时搜索)
我使用的是一个简单的“实时搜索”脚本,当用户在文本框中键入内容时,它会显示来自MySQL数据库的结果。如果Javascript指向一个完全独立的页面,那么它就可以正常工作,但我需要它指向同一页面。不幸的是,当我尝试这样做时,当结果生成时,页面本身被复制 这与预期的效果一样:Javascript 如何停止xmlhttp.open复制整个页面?(ajax实时搜索),javascript,ajax,jquery,Javascript,Ajax,Jquery,我使用的是一个简单的“实时搜索”脚本,当用户在文本框中键入内容时,它会显示来自MySQL数据库的结果。如果Javascript指向一个完全独立的页面,那么它就可以正常工作,但我需要它指向同一页面。不幸的是,当我尝试这样做时,当结果生成时,页面本身被复制 这与预期的效果一样: Document called: "test.php" containing JavaScript below and test2.php containing the PHP code xmlhttp.o
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
}
为什么您希望代码指向自身?使用只返回所需内容的web服务似乎是合乎逻辑的。这并不是说你必须复制代码,只是做一些普通的方法,在整个页面或web服务中吐出内容
如果您需要调用同一页面,您可以始终使用正则表达式来删除所需内容,而不是替换整个页面。我想您没有任何示例,也无法为我指出如何将正则表达式用于上述内容的正确方向?