Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用jquery或javascript为ajax url构造查询字符串?_Php_Javascript_Jquery_Ajax_Search - Fatal编程技术网

Php 如何使用jquery或javascript为ajax url构造查询字符串?

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“如果参数没有被选中,甚

我目前正在使用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


服务
技术
其他
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的方法


好吧,您真正想做的是在不刷新页面的情况下提交表单。下面是如何做到这一点:

  • 在表单中添加提交按钮
  • 钩住表单的提交事件
  • 取消默认操作,即使用响应刷新页面
  • 通过ajax提交并处理响应
  • 像这样:

    <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();
    }