Php 如何使用jquery或javascript为ajax url构造查询字符串?
我目前正在使用ajax和jquery来更新搜索结果,其中的表单具有不同的筛选类别 我的问题是,我希望能够从当前页面中的复选框和其他表单元素向用于ajax的url传递不同的变量 我的url是“http://example.com/search/results/?cat=tech&min=5&max=30“在我下面的ajax调用中,我需要该url更新为类似“http://example.com/search/results/?cat=service&min=10&max=30“如果参数没有被选中,甚至可以将其删除“http://example.com/search/results/?min=5”Php 如何使用jquery或javascript为ajax url构造查询字符串?,php,javascript,jquery,ajax,search,Php,Javascript,Jquery,Ajax,Search,我目前正在使用ajax和jquery来更新搜索结果,其中的表单具有不同的筛选类别 我的问题是,我希望能够从当前页面中的复选框和其他表单元素向用于ajax的url传递不同的变量 我的url是“http://example.com/search/results/?cat=tech&min=5&max=30“在我下面的ajax调用中,我需要该url更新为类似“http://example.com/search/results/?cat=service&min=10&max=30“如果参数没有被选中,甚
无
服务
技术
其他
5
10
15
5
10
15
$(文档).ready(函数(){
$('.filter').live('单击焦点',函数()){
$.ajax({
网址:http://example.com/search/results/?cat=tech&?min=5&max=30,
上下文:document.body,
成功:功能(数据){
$('.result').html(数据);
}
});
});
});
上面ajax调用中的url如何需要在url中更新参数。此外,并非总是包含或需要每个参数
如果我可以使用PHP的http_build_查询函数之类的东西,它会自动知道要替换的数组值或类似的东西,那就太好了,但我真的很想知道该怎么做。我不确定是否需要创建数组和concatatate
理想情况下,我可以拥有类似“http://example.com/search/results/cat/tech/min/5/30“如果这是可行的。使用jQuery的方法
或
好吧,您真正想做的是在不刷新页面的情况下提交表单。下面是如何做到这一点:
<form id="MyFilterForm" action="/myBaseUrl" method="POST">
...
<input type="submit" value="Filter"/>
</form>
<script type="text/javascript">
$(document).ready(function(){
$('#MyFilterForm').submit(function(event){
// cancel the default action
event.preventDefault();
var theForm = $(this);
$.post(theForm.attr('action'), theForm.serialize(), function (data){
$('.result').html(data);
});
});
});
</script>
...
$(文档).ready(函数(){
$('#MyFilterPerform')。提交(函数(事件){
//取消默认操作
event.preventDefault();
var theForm=$(这是);
$.post(theForm.attr('action')、theForm.serialize()、函数(data){
$('.result').html(数据);
});
});
});
您可以检查选择了哪些无线电输入,并相应地构建url,例如:
<input id="radCat" type="radio" name="cat" value="service" /> Service<br />
string url = "http://example.com/search/results/?";
if($("#radCat").attr("checked").val() == "checked") {
url = url + "cat=" + $("#radCat").attr("value").val();
}
服务
字符串url=”http://example.com/search/results/?";
if($(“#radCat”).attr(“选中”).val()=“选中”){
url=url+“cat=“++$(“#radCat”).attr(“value”).val();
}
我不希望表单上有一个提交按钮。我希望每次选择或取消选择表单元素时,结果都会更新。这可能吗?当然可以。只需连接到正确的事件类型。如果您有所有单选按钮,您可以使用“更改”或“单击”事件,以此为例:看起来我需要使用replace(/\=+|和/g,“/”)
谢谢你的回答。它真的很有帮助!
url: 'http://example.com/search/results/?' + $('form').serialize().replace(/&=/, '/'),
<form id="MyFilterForm" action="/myBaseUrl" method="POST">
...
<input type="submit" value="Filter"/>
</form>
<script type="text/javascript">
$(document).ready(function(){
$('#MyFilterForm').submit(function(event){
// cancel the default action
event.preventDefault();
var theForm = $(this);
$.post(theForm.attr('action'), theForm.serialize(), function (data){
$('.result').html(data);
});
});
});
</script>
<input id="radCat" type="radio" name="cat" value="service" /> Service<br />
string url = "http://example.com/search/results/?";
if($("#radCat").attr("checked").val() == "checked") {
url = url + "cat=" + $("#radCat").attr("value").val();
}