2014-09-18 42 views
1

我有一個複選框列表,像這樣:jQuery的:創建ID的數組傳遞作爲一個GET參數

<input type="checkbox" value="12" name="urssaf-check[]" class="urssaf-check"> 
<input type="checkbox" value="13" name="urssaf-check[]" class="urssaf-check"> 

我需要檢索id的陣列選擇(複選框的值)和通它作爲一個url中的參數。到目前爲止,我有這樣的:

var items = []; 
$('.urssaf-check').each(function (key, object) { 
    items.push($(this).val()); 
}); 

這給了我:

["12", "27", "26", "15", "28", "29", "30", "16", "14", "19", "17", "18", "20", "31", "32", "33", "21", "22", "34", "23", "24", "25"] 

到目前爲止好,但現在我需要這在一個URL,這樣當我做$ _GET [「IDS」]或類似的控制器,將寫入頁面的內容我可以看到相同的數組數組。

我現在嘗試是這樣的:

var array = { ids : items }; 
var params = $.param(array, true); 

,而params給了我:

ids=12&ids=27&ids=26&ids=15&ids=28...... 

其中在獲取參數的var_dump將導致上我只得到了最後一個項目的id 。如果我在「ids」之後手動添加[],它會正常工作,但是我想知道用jQuery做這件事的正確方法是什麼。

編輯:我需要的URL在不同的窗口中打開,我在做這樣的:

function MM_openBrWindow(theURL,winName,features) { 
     window.open(theURL,winName,features); 
} 
MM_openBrWindow($(this).attr('data-url')+'/?'+params, 'name', "scrollbars=yes,width=1000,height=720"); 
+1

你在使用querystring,希望不是ajax或類似的東西? – adeneo 2014-09-18 17:04:05

+0

是的,你需要添加[],因爲這是一個PHP的期望。當jQuery不是數組時,jQuery不知道你需要[]作爲名字。 – epascarello 2014-09-18 17:05:09

+0

爲什麼不傳遞一個字符串而不是一個數組..我的意思是,使用'join'在javascript中使用特殊字符連接數組,然後在PHP代碼中使用'explode()'。 – bipen 2014-09-18 17:08:37

回答

1

也許你可以直接傳遞數組當你把它發佈到你的控制器,例如:

$.post("controller.php", { 'urssaf-check[]': items }); 

如果您打算使用post或get發送它,則無需解析它。

+1

要獲得投票,請添加:'$ .post(「controller.php」,$('。urssaf 。-check')序列化());'。你的回答可能不正確。我沒有測試過。 – 2014-09-18 18:28:05

+0

我需要它在新窗口中打開(我編輯了我的問題),所以發佈請求不會幫助我。無論如何,我會測試這個,並告訴它是否工作 – 2014-09-18 19:12:23

0

那麼,我會等待幾天,但到目前爲止,我做到了這一點,它對我來說就像現在這樣。我仍然不高興,並認爲需要一個更好的方法來解決這個問題:

  var params = ""; 
      for (var i = items.length - 1; i > 0; i--) { 
       if(i==1){ 
        params += 'operations[]='+items[i]; 
       }else{ 
        params += 'operations[]='+items[i]+'&'; 
       } 

      }; 
相關問題