こんにちは、私の質問を読んでくれてありがとう。
私のウェブサイトは Godaddy でホストされており、「デラックス Linux ホスティング パッケージ」を持っています。
私の Web ページは、ユーザーが JQuery、Ajax、PHP、および MySQL を使用して検索用語に関連する提案を表示する単純なフォームを使用して市場を見つけるのに役立ちます。
検索フィールドでオートコンプリート機能を使用しているため、ユーザーが検索語を入力すると、関連する提案が id 'list_area' の div の入力フィールドの下に表示されます。
提案はJQueryとPHPスクリプトによって入力されており、AJAX「Post」メソッド(エラーをコンソールに記録したかったため、現在は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 への接続試行が赤で強調表示されるだけで、それ以上の詳細は表示されません。
私は少し初心者であり、解決策の検索を開始する方法がわからないため、ここに質問を置きました。私の状況に関連するエラーのグーグル検索はあまり役に立たず、それがサーバーの問題なのか、ブラウザの問題なのか、コードの問題なのかわかりません.
あなたが提供できる助けを前もって感謝します。