Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/364.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
Javascript 添加查询字符串ajax的最佳方法_Javascript_Jquery_Ajax - Fatal编程技术网

Javascript 添加查询字符串ajax的最佳方法

Javascript 添加查询字符串ajax的最佳方法,javascript,jquery,ajax,Javascript,Jquery,Ajax,我正在为一个网站开发一个ajax过滤系统 最终用户选择过滤器的点在URL上已经有一个查询字符串 我想获取这个查询字符串并将我的数据附加到其中,我需要输入名称和值 我目前拥有的JS,我知道这是一份有点不好的工作——JS不是我的强项 $( "#narrowSearch" ).submit(function( event ) { function checkInputs(){ var $checkboxes = $("input:checkbox");

我正在为一个网站开发一个ajax过滤系统

最终用户选择过滤器的点在URL上已经有一个查询字符串

我想获取这个查询字符串并将我的数据附加到其中,我需要输入名称和值

我目前拥有的JS,我知道这是一份有点不好的工作——JS不是我的强项

    $( "#narrowSearch" ).submit(function( event ) {

    function checkInputs(){
        var $checkboxes = $("input:checkbox");

        var opts = [];

        $checkboxes.each(function(){
            if (this.checked){
                opts.push(this.value);
            }
        });
    return opts;
    }
    var opts = checkInputs();
    if(document.location.search.length) {
        opts += getUrlVars();
    }
    updateVenues(opts);

    event.preventDefault();
});

  function updateVenues(opts){
    $.ajax({
      type: "POST",
      url: "/venue-search/ajax/",
      dataType : 'json',
      cache: false,
      data: opts,
      success: function(records){
      $("#searchResults").empty();
        $.each(records, function(idx, record){
         $("#searchResults").append('<section class=\"griditem\"><a href=\"/venue-preview/'+record.id+'" class=\"various fancybox.ajax\"><span class=\"listing_img\"><img src=\"<?php echo MEDIAURL; ?>'+record.main_image+'\"><span class=\"listing_title\">'+record.title+'</span></span></a></section>');
       });
      }
    });
  }
  function getUrlVars()
{
var vars = [], hash;
var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
for(var i = 0; i < hashes.length; i++)
{
    hash = hashes[i].split('=');
    vars.push(hash[1]);
    vars[hash[0]] = hash[1];
}
return vars;
}
这样,它当前返回的查询字符串为:camping1,TF74AA,20:。1,TF74AA,20是当前查询字符串,是筛选前选中的复选框。正如你所见,露营和1之间没有逗号。此外,这不包括任何名称,仅包括值

理想情况下,我希望查询字符串为:

?name=value&name=value或JSON格式,然后我可以在服务器端解析它并返回JSON响应

我一直在寻找一个基于我期望达到的目标的教程,但我正在努力。因此,我使用了各种教程,并从每个教程中学习了一些内容

我希望我已经解释得足够清楚。

我建议使用window.location.search.substring1从当前URI获取查询字符串。注意substring1部分删除了

然后我将把它放入javascript对象中。有一些jQuery插件可以做到这一点,或者您可以构建自己的插件。有关一些想法,请参见此问题-


现在您有了一个javascript对象,它表示您的筛选条件。您可以根据用户交互的需要修改此对象,然后序列化为JSON,或者使用$.param返回到查询字符串中,或者简单地将对象作为数据属性传递给$.ajax调用,然后通过jQuery将其序列化为查询字符串。

不要使用查询字符串,请使用每个参数都具有属性的对象。jQuery将自动将其转换为查询字符串。好的,根据您的建议,表单数据现在显示为[object object][object object object],不使用FormData,只使用普通的Javascript对象。{name1:value1,name2:value2,…}javascript中没有关联数组。有数组和对象。Vars是一个数组。