AJAX 新手。有点不确定如何在不重新加载整个页面的情况下提交 GET 请求。
- 用户访问
www.example.com/products/
- 类型“园艺工具”
- 结果与 URL 更改一起
www.example.com/products/results?search=Gardening+Tools
加载,无需重新加载页面即可完成。 - 任何用户都可以使用该 URL
www.example.com/products/results?search=Gardening+Tools
并获得相同的结果。
注意:要点 4 很重要。只是将参数添加到 URL 以使其看起来像这样,这一定不是一些 hacky 方式。一些用户可能想要添加书签(除此之外,我GET
首先使用了请求)。
所以这是我的代码的基本表示,适用于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更改为GET
s ,但没有成功。有没有我不理解的概念?
我认为这可能与$('form#submit').submit(function (e)
和 preventDefault() 函数有关。但是 preventDefault 是停止页面重新加载所必需的。