从javascript向PHP函数发送数组并读取其值

时间:2016-06-08 10:33:29

标签: javascript php jquery arrays json

我在jQuery中有一个onclick和post函数,我将两个变量传递给我的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");
    }

2 个答案:

答案 0 :(得分:1)

使用以下代码:

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

答案 1 :(得分: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',
  ),
)

例如:

$b = $a['foo'] // b = 123
$b = $a['arr'][0] // b = hello

然后,您应该观察从请求中收到的值,并根据它使用if ... else ...等。