gpt4 book ai didi

php - 通过ajax在html/php中搜索表单

转载 作者:行者123 更新时间:2023-11-28 16:38:07 25 4
gpt4 key购买 nike

我有一个搜索表单,其中数据库查询已用 php 编码,html 文件通过 ajax 调用此 php 文件以在搜索表单中显示结果。问题是,我希望结果以与search.html相同的形式显示;然而,当 ajax 工作时,它会转到 search.php 来显示结果。

搜索.html:

<!DOCTYPE html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script src="scripts/search_ajax.js" type="text/javascript"></script>
</head>

<body>
<form id="submitForm" method="post">
<div class="wrapper">
<div class="field">
<input name="search" id="search" />
</div><br />
<input id="button1" type="submit" value="Submit" class="submit" onclick="run_query();" /><br />
</div>
<div id="searchContainer">
</div>
</form>
</body>
</html>

如果我将 action="search.php"添加到表单标记,它会在 search.php 上显示结果。我希望它以相同的形式显示[即search.html,而不是search.php],如果我只是添加javascript函数[如上所述],它不会在search.html上显示任何内容。

search_ajax.js:

var xmlHttp


function run_query() {
xmlHttp=GetXmlHttpObject();
if (xmlHttp==null) {
alert ("This browser does not support HTTP Request");
return;
} // end if
var url="search.php";
xmlHttp.onreadystatechange=stateChanged;
xmlHttp.open("GET",url,true);
xmlHttp.send(null);
} //end function

function stateChanged(){
if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete"){
document.getElementById("searchContainer").innerHTML=xmlHttp.responseText;
} //end if
} //end function

function GetXmlHttpObject() {
var xmlHttp=null;
try {
// For these browsers: Firefox, Opera 8.0+, Safari
xmlHttp=new XMLHttpRequest();
}catch (e){
//For Internet Explorer
try{
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
}
return xmlHttp;
} //end function

搜索.php:

<?php
include 'config.php';

$search_result = "";

$search_result = $_POST['search'];

$result = mysql_query("SELECT cQuotes, vAuthor, cArabic, vReference FROM thquotes WHERE cQuotes LIKE '%$search_result%' ORDER BY idQuotes DESC", $conn)
or die ('Error: '.mysql_error());

最佳答案

onclick="run_query();"

您似乎没有阻止表单的默认操作。在 onclick 末尾添加 return false;:

onclick="run_query(); return false;"

或者,如果 run_query() 实际上返回 false,则重写 onclick 如下:

onclick="return run_query();"

更新:您确实没有将请求参数传递给 PHP 代码。替换

var url = "search.php";

var url = "search.php?search=" + searchvalue;

并在 PHP 中使用 $_GET。如果您确实想使用 POST,那么就这样做

var url = "search.php";
xmlHttp.open("POST",url,true);
xmlHttp.send("search=" + searchvalue);

(searchvalue 显然是用户输入的值。我假设您可以弄清楚如何使用 JS 从 HTML DOM 中获取它。

这与实际问题无关,我建议您使用 jQuery 而不是所有那些不透明和样板 Ajax 代码。为了这。它极大地简化了 Ajax 的工作。例如,您可以使用 jQuery.post()而不是这一切。该链接指向几个示例。

关于php - 通过ajax在html/php中搜索表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2710175/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com