您好,感谢您花时间阅读我的问题。
我的网站托管在 Godaddy 上,并且我有“豪华 Linux 托管包”。
我的网页使用简单的表单帮助用户找到市场,该表单使用 JQuery、Ajax、PHP 和 MySQL 来显示与其搜索词相关的建议。
我在搜索字段中使用了自动完成功能,这样当用户输入他们的搜索词时,相关建议会出现在 id 为“list_area”的 div 中的输入字段下方。
这些建议由 JQuery 和一个 PHP 脚本填充,该脚本通过 AJAX“发布”方法(现在是 AJAX 方法,因为我想将错误记录到控制台)提供搜索词。
这是在 HTML 页面中调用 js 脚本的位置:
<input autocomplete="off" type="text"
class="form-control input-lg" name="market_search"
id="market_search" placeholder="Enter a market name"
onkeyup="autoComplete();">
同一页面上还有一个 preventDefault 功能,可以防止在没有搜索词的情况下提交表单:
<script>
$( "#search_form" ).submit(function(e) {
if( $('#market_search').val() =='' ){
e.preventDefault();
}
});
</script>
这是 Autocomplete.js
function autoComplete()
{
var list_area = $('#list_area');
var min_length = 1;
var search_term = $('#market_search').val();
if (search_term.length >= min_length) {
$.ajax({
type: 'POST',
url: 'assets/scripts/search_markets.php',
data: {
search_term: search_term
},
success: function(data){
list_area.hide().html(data).fadeIn('fast');
console.log(status);
},
error: function(xhr, textStatus, error){
alert("Unable to retrieve data. Please try again.");
console.log(xhr.statusText);
console.log(textStatus);
console.log(error);
}
});
}else{
list_area.hide();
}
}
function set_item(item) {
// change input value
$('#market_search').val(item);
// hide proposition list
$('#list_area').hide();
}
这是search_markets.php
<?php
include("connect_to_mysql.php");
$output = '';
$search_term = mysql_real_escape_string($_POST['search_term']);
$sql = mysql_query("
SELECT name FROM markets
WHERE name LIKE '%$search_term%'
ORDER BY name LIMIT 0,10
");
$num_rows = mysql_num_rows($sql);
if($num_rows > 0){
$output .= '<ul>';
while($row = mysql_fetch_array($sql)){
$market_name = $row['name'];
$market_name = preg_replace('/\s{2,}/u', ' ', $market_name); // replaces large spaces with single space between words
$output .='<li onclick="set_item(\''.str_replace("'", "\'", $market_name).'\');">'.$market_name.'</li>';
}
$output .= '</ul>';
}
echo($output);
mysql_close($mysql_conn);
?>
该代码的行为与您预期的一样,并在#list_area div 中返回一个建议列表。
但是,如果您在大约 30 秒的时间内过多地使用搜索字段 - 即您输入一个字母、删除该字母、输入一个字母,然后这样做几次等等 - 建议将停止出现并且该网站如果您尝试导航到主页,则会暂时不可用。
出现此错误:“连接已重置”
在 Chrome 中我得到错误:“net::ERR_EMPTY_RESPONSE”
在 Firefox 中,我没有收到该错误代码,它只是以红色突出显示与 search_markets.php 的尝试连接,并且没有提供更多详细信息。
我把这个问题放在这里是因为我有点新手,甚至不确定如何开始寻找解决方案;谷歌搜索与我的情况有关的错误并没有太大帮助,我不确定这是服务器问题、浏览器问题还是代码问题。
非常感谢您提供的任何帮助。