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使其看起来像这样的怪诞方式。 一些用户可能想要添加书签(这就是为什么我首先使用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
更改为GET
但是没有用。 有我不理解的概念吗?
我认为这可能与$('form#submit').submit(function (e)
和preventDefault()函数有关。但是,stopDefault是停止页面重新加载所必需的。