2011-03-07 137 views
0

我已經修改了我的代碼,我使用了firebug console.log來檢測php是否獲取數組傳遞的天氣。和螢火蟲顯示此 - rescheck [] = 2 & rescheck = 1 & rescheck = 3如何通過JQUERY將多個複選框傳遞給PHP

我認爲PHP獲取數組,如果這是什麼PHP數組應該是。

SO的傢伙,如果這正確的如何將數組插入數據庫?或如何循環它? foreach循環iive沒有奏效。

jQuery代碼:

$('#res-button').click(function(){ 

var room_id=$('[name=rescheck[]]:checked').serialize().replace(/%5B%5D/g,'[]'); 

    alert(room_id); 


    $.ajax({ 
        type: "POST", 
        url: "reservation-valid.php", 
        data: {name_r:name_r, email_r:email_r,contact_r:contact_r,prop_id:p_id,cvalue:room_id}, 
        success: function(data) { 

        console.log(data); 
} 

}); 
}); 

<input type="checkbox" name="rescheck[]" value="<?php echo $roomid; ?>" /> 

PHP代碼:

$c_array=$_POST['cvalue']; 

    echo $c_array; 

    //foreach($c_array as $ch) 
    //{ 
    //$sql=mysql_query("INSERT INTO reservation VALUES('','$prop_id','$ch','$name_r','$contact_r','$email_r','')"); 
    //} 

我想我管理我的jQuery代碼是正確的,但我不知道如何獲取與PHP。

+0

@user,我已經編輯你的問題,以使它更好一點。請停止無理取消我的修改。 – Shoe 2011-03-07 14:07:58

+0

我沒有撤消您的編輯。我甚至不知道如何撤消 – user628961 2011-03-07 14:19:23

+0

@Charlie Pigarelli簡單,老虎。看起來他在提交更新時可能正在編輯他的代碼。 – Wiseguy 2011-03-07 14:43:37

回答

0

這就是我在ibn網站上用jquery和ajax調用保存到db的複選框列表。它創建一個數組並將其傳遞給ajax調用,php腳本處理該數組。 如果你在這裏得到任何錯誤,你應該用螢火蟲調試js數組,以確保它正確地形成。

js腳本:

var $checkBox = $('[name=rescheck[]]:checked'); 
$checkBox.each(function() { 
    if ($(this).is(":checked")){ 
     valuesCheck[this.value] = 1; 
    }else{ 
     valuesCheck[this.value] = 0;  
    } 

和PHP腳本:

$checkTab = $_POST['cvalue']; 
     foreach ($checkTab as $idChkTab => $checkedOrNot){ 
      if ($checkedOrNot== "0"){ 
       //do something if isn't checked 
      } 
+0

我保存了$ c_array = $ _ POST ['cvalue']; – user628961 2011-03-07 14:14:31

+0

抱歉沒有看到它。看看我的其他答案我認爲我們得到它:) – Kreker 2011-03-07 16:39:45

+0

wheres你的其他答案? – user628961 2011-03-07 16:44:12

0

ROOM_ID是一個數組,所以如果你想獲得每個值,您需要首先獲得所有值在一起。

var room_id_string = ''; 

for(i=0;i<room_id.length;i++){ 
    room_id_string += room_id.eq(i).val() + ','; 
} 
0

你的下面的代碼將只通過的[name=rescheck[]]:checked陣列jQuery對象以room_id

取而代之的是,你必須創建一個數組,並把它推值這樣

var room_id = Array(); 

$('[name=rescheck[]]:checked').each(function(){ 
     room_id.push($(this).val()); 

}); 
+0

我試過你的代碼。仍然不工作。我不明白爲什麼 – user628961 2011-03-07 14:31:19

+0

我將如何讓我的PHP代碼獲取數組?並請檢查我修改後的代碼 – user628961 2011-03-08 03:15:36

+0

以上的男人。我試過你的代碼,它在jQuery中可以。我提醒了room_id,它顯示了所有的ID。但是當我檢查php(那是當jquery arrray被傳遞時),我使用console.log來查看天氣數組是否真的被傳遞,但唯一傳遞的是數組的最後一個值。 – user628961 2011-03-08 14:25:43

0

在jQuery中你可能會更容易使用序列化函數來獲取所有的表單數據。 jQuery將表單傳遞給服務器,因此您不必擔心獲取所有值。如果您將它與驗證插件一起使用,您可能會發現它更容易一些!

http://bassistance.de/jquery-plugins/jquery-plugin-validation/

+0

你能告訴我如何使用序列化,它有什麼用處? – user628961 2011-03-07 14:13:07

+0

在您的ajax中將「data:{...}」行更改爲「data:$(」#formId「)。serialize(),」其中formId是表單的ID(或者您可以使用引用表單如果先前存儲在一個變量中,則應從表單中獲取所有信息並創建對象以傳遞給服務器 – Alex 2011-03-07 14:53:57

+0

呵呵,http://api.jquery.com/serialize/供參考 – Alex 2011-03-07 14:55:02

相關問題