2016-06-08 121 views
0

我在jQuery中有一個onclick和post函數,我將兩個變量傳遞給我的PHP函數。從javascript發送數組到PHP函數並讀取它的值

功能看起來像以下:

$(".pop-save-us").click(function(){ 
    console.log(checkbox_events); 
    console.log(user_id); 
    // alert("Button save pressed"); 
    $.post('/user/AddRemoveBrandUsers', { brands: JSON.stringify(checkbox_events),userId:user_id} , function(data) { 
     if(checkbox_events.length==0) 
     { 
      alert("No changes were made.") 
     } 
     else { 
      if (data == "ok") { 
      alert("ok"); 
      } 
     } 
    }); 

}); 

第一個值是在以下格式的數組:

的console.log(checkbox_events)給出以下輸出:

[2: "checked", 4: "checked", 5: "checked"] 

我請執行JSON.stringify(checkbox_events)將我的數組轉換爲JSON格式並將其傳遞給我的PHP函數,如下所示:

public function AddRemoveBrandUsersAction() 
    { 
     $brands = $this->getRequest()->getPost("brands"); 
     $userId = $this->getRequest()->getPost("userId"); 
     for($i=0;$i<count($brands);$i++) 
     { 
     // how can I now access each value of the brands array 
     // I need both key and value... How do I access them ?? 
     } 
     die("ok"); 
    } 
+1

所以,你想使用一個'foreach($ array爲$ key => $ value)'? – Epodax

+0

好的,你能回答一個答案的形式,以便我可以接受你的回答....我怎樣才能得到循環內的「檢查」值? – perkes456

+0

「檢查」值是什麼意思?如果您指的是複選框或收音機,那麼值/輸入僅在被檢查時才被髮送? – Epodax

回答

1

使用的代碼如下:

if(!empty($brands) && sizeof($brands) > 0){ 
    foreach($brands as $key => $value){ 
     ... 
    } 
} 
+0

好吧$ key將會是= 2的值......但是我怎樣才能得到循環內的「checked」字符串值? :) – perkes456

+0

$ value'checked'text –

+0

and $ key is = 2? :) – perkes456

0

您應該使用

json_decode(%your_string_with_json%) 

功能,讓您的JSON字符串的內部PHP表示。因此,您將能夠操作它(獲取數據,設置數據)。使用調試器也非常有用。

$a = json_decode('{"foo": 123, "bar": null, "baz": "qwerty", "arr": ["hello", "world"]}', true); 

會給你和數組,你可以在你的代碼中方便地使用:

array (
    'foo' => 123, 
    'bar' => NULL, 
    'baz' => 'qwerty', 
    'arr' => 
    array (
    0 => 'hello', 
    1 => 'world', 
), 
) 

例如:

​​

然後,你應該看你從接收到的值請求,並根據它,使用if ... else ...等。