AJAX の新機能。ページ全体をリロードせずに GET リクエストを送信する方法が少しわかりません。
- ユーザーの訪問
www.example.com/products/
- タイプ「ガーデニングツール」
www.example.com/products/results?search=Gardening+Tools
結果は、ページのリロードなしで行われるすべての URL の変更とともにインラインで読み込まれます。- どのユーザーも URL
www.example.com/products/results?search=Gardening+Tools
を使用して同じ結果を得ることができます。
注:箇条書き 4 は重要です。URL にパラメーターを追加するだけで、そのように見えるハックな方法であってはなりません。ブックマークしたいユーザーもいるかもしれません (GET
最初にリクエストを使用したのはそのためです)。
したがって、これは a で機能する私のコードの基本的な表現ですPOST
:
フォーム: を使用した基本的な提出POST
、私はこれを希望しますGET
。
<form id="submit" action="" method="POST">
<input type="text" name="search"/>
<button type="submit"></button>
</form>
jQuery : を使用してリクエスト.ajax()
を送信しますPOST
/products/results.php
$('form#submit').submit(function (e) {
e.preventDefault();
$.ajax({
type: 'POST',
url: 'results.php',
data: "search="+encodeURIComponent($('input[name="search"]').val()),
dataType: 'json',
success: function(data) {
//inject some html into page
}
});
}
results.php : (また、ここで SQL インジェクションから保護されていることを確認するために、魔法の引用符はオフになっています)。
$query = $_POST['search'];
$query = mysql_real_escape_string($query);
$query = htmlspecialchars($query);
//you get the point: straight forward db connect, query and return as json
POST
そのため、すべてのs をs に変更しようとしましたが、うまくいきませGET
んでした。私が理解していない概念はありますか?
$('form#submit').submit(function (e)
および preventDefault() 関数と関係があると思います。ただし、ページのリロードを停止するには preventDefault が必要です。