使用jquery将数组附加到查询字符串

时间:2013-03-29 16:22:01

标签: jquery

我有一个包含作业详细信息列表的表格,当我点击时,我会找到每个作业的复选框 下一页链接选择复选框,以便我应该获取带有复选框值和链接url查询字符串的查询字符串

<input type="checkbox" class="checkJobToSend" name="checkJOb" value="<TMPL_VAR NAME=job_id>"
    <input type="checkbox" class="checkJobToSend" name="checkJOb" value="<TMPL_VAR NAME=job_id>"
    <input type="checkbox" class="checkJobToSend" name="checkJOb" value="<TMPL_VAR NAME=job_id>"
    <input type="checkbox" class="checkJobToSend" name="checkJOb" value="<TMPL_VAR NAME=job_id>"
    <input type="checkbox" class="checkJobToSend" name="checkJOb" value="<TMPL_VAR NAME=job_id>"


    <a href ='index.cgi?reqpage=$prev_page&job_category_id=$jobCategory' class='paginateAdmin' id='govtPaginate'>prevPage</a>


    function getJobsChecked(){ 
            var arr = [];
            var i= 0;
            $('.checkJobToSend:checked').each(function(){
                 arr[i++] = $(this).val();
            });   

            return arr;

      }

          $(document).ready(function() {

        $(document).on('click','.paginateAdmin',
            function(e){
              e.preventDefault();      
             var arr = getJobsChecked();

              var post = $(this).attr("href");
              var array = post.split('?');
          var id=$(this).attr('id');




    $.post(
        'job.cgi',
        array[1],
        function(data,status){

           switch(id)
            {
                case "nonItPaginate":

                     $('#nonit').html(data);

                    break;
                case "ItPaginate":

                         $('#it').html(data);
                        break;
                case "govtPaginate":

                     $('#govt').html(data);
                    break;
            default:

    }    

        }
    );

    });
     });    

我如何形成一个带有数组[1]的queryString,并且带有一个复选框值的arr,如

reqpage=2&job_category_id=2&checkJob=1&checkJob=2&checkJob=3

2 个答案:

答案 0 :(得分:0)

您不能拥有多个具有相同名称的参数,只能有一个参数checkJob。所以你可以这样做:

reqpage=2&job_category_id=2&checkJob=1,2,3

可以这样实现:

// get checked values
var checked = $('input[type="checkbox"].checkJobToSend:checked');    
var checkedValues = [];
checked.each(function(i) {

    // add checked values to our temporary list
     checkedValues.push(checked[i].value);        
});

// create query param
var queryParam = 'reqpage=2&job_category_id=2&checkJob=' + checkedValues.join(',');    

参见工作示例:http://jsfiddle.net/amyamy86/GsSqc/

在服务器端代码中,必须解释checkJob=1,2,3

// in PHP
$jobs = explode(",", $_GET["checkJob"]);
echo $jobs[0];    // outputs value: 1
echo $jobs[1];    // outputs value: 2
echo $jobs[2];    // outputs value: 3

您可以阅读有关以下使用的功能的更多信息:

答案 1 :(得分:0)

这将创建您的查询字符串并将其添加到哈希值(哈希部分将无法在jsFiddle上运行,或者至少您不会在URL中看到它更改):

Javascript

function getJobsChecked(){ 
            var arr = [];
            var i= 0;
            $('.checkJobToSend:checked').each(function(){
                 arr[i++] = $(this).val();
            });   
      return arr;
      }

$("#btn").on("click",function(){
    var arr = getJobsChecked();
    var qString = "reqpage=2&job_category_id=2";
    for(var i = 0; i<arr.length;i++)
    {
        qString+="&checkJob=" + arr[i];
    }
    location.hash=qString;
});

<强> HTML

<input type="checkbox" class="checkJobToSend" name="checkJOb" value="1" />1
<input type="checkbox" class="checkJobToSend" name="checkJOb" value="4" />2
<input type="checkbox" class="checkJobToSend" name="checkJOb" value="7" />3
<input type="checkbox" class="checkJobToSend" name="checkJOb" value="12" />4
<input type="checkbox" class="checkJobToSend" name="checkJOb" value="5" />5
<input type="button" id="btn" value="Do It" />

jsFiddle http://jsfiddle.net/Zxhzq/