2009-10-09 84 views
0

我有一個選擇框:通過所有選擇值到PHP

<select name="sub_selected" class="bmarks" id="sub_selected" 
style="width:400px" size="5"> 
      <option value="1">first value</option> 
      <option value="2">second value</option> 
      <option value="4">other vale</option> 
            </select> 

我想所有的值傳遞給PHP。

我寫了下面的代碼,但它不工作:

$('#sub_selected').each(function(i, selected){ 
     foo[i] = $(selected).val(); 

       var title  = $('#prop_tile').attr('value'); 
       $.ajax({ 
       type: "POST", 
       url: "add_process.php", 
       data: "title="+ title +"& stages="+ foo, 
       success: function(html){ 
       if (html==1){ 
       $('div.saving').hide(); 
       $('div.success').fadeIn(); 
       }else { 
       $('div.saving').hide(); 
       $('div.nosuccess').fadeIn(); 
       } 

       } 
       }); 

我要提交選擇框的所有值到PHP MySQL中存儲,最好是這種格式(1,2,4) 。

謝謝

+0

只是爲了扮演魔鬼的擁護者,請問爲什麼?如果選擇了所有的值,那麼腳本會做什麼,而不是通常會提交的值? – 2009-10-09 17:14:45

回答

0

如果你真的想要所有這些,那麼不要這樣做。用PHP獲得它們的方式與獲得它們顯示選擇選項的方式相同。

4

我對jquery瞭解不多,但在我看來,您可能完全可以在HTML級別解決您的問題,假設您的jquery只是提交包含您的<select>標記的表單。 <select>的行爲方式是瀏覽器只會提交所選帖子中的數據。如果選項未突出顯示,則不會將其發送到您的POST中的服務器。

您可以按照以下方式解決問題;首先,您的<select>需要multiple="multiple"屬性,以便可以選擇多個元素。其次,將selected="selected"屬性添加到<option>標記中的每個標記。最後,如果您不希望用戶在提交表單前取消選擇任何選項,請將disabled="disabled"屬性添加到<select>標記。

更新:您可能還想要將name="sub_selected"更改爲name="sub_selected[]",以便您可以在PHP端以數組形式接收該值。您需要將您的jQuery參考sub_selected調整爲sub_selected[]

+2

+1:我記得,選擇元素以數組形式進入PHP。 – Powerlord 2009-10-09 17:30:21

+0

@R。 Bemrose:實際上,如果select標籤的name屬性以[]結尾,select元素將僅以數組的形式進入PHP。 – Asaph 2009-10-09 18:02:40

0

如果你真的想用jQuery做到這一點,這裏是做簡單的/正確的方法:

// I'm not sure what the '#prop_tile' element is so I didn't 
// include it for this example 
var all_vals = new Array; 
$('#sub_selected option').each(function() { 
    all_vals.push($(this).val()); 
}); 
$.post('add_process.php', { stages:all_vals }, function(html) { 
    $('div.saving').hide(); 
    $('div.success').fadeIn(); 
},'html'); 

在接收端,你可以這樣做:

<?php 
if(isset($_POST['all_vals'])) { 
    $all_vals = $_POST['all_vals']; 
    // $all_vals is now an array = [1,2,4] 
} 
?> 

注意:如果你透露更多關於你爲什麼想要這樣做的更多細節會很好,因爲皮膚很深,這似乎是一件愚蠢的事情。