从ajax捕获php端的数据

时间:2014-10-08 18:48:45

标签: php ajax

我很困惑。从ajax传递数据后,如何在php端捕获值。最初,我将数据放入对象数组中。通过Ajax传递数据时,我是将它作为stringArray还是作为ObjectArray传递?这是否意味着我需要stringify()它?

我在MVC中这样做,这就是为什么它在网址中进行测试

<script>
    var objectArray = [{"name":"Robert", "type": "male"}, {"name":"Jane", "type": "female"}]
    var stringArray = JSON.stringify(objectArray);

    $.ajax({
       type: 'POST',
       url: '/test',
       data: stringArray,  //do I pass in objectArray or stringArray here?
       success: function(response)
       {
          alert(response);
       }   
    });
</script>   


test.php
<?php

public function test()
{
   $var = '';
   foreach($_POST['name'] as $value)
   {
       $var .= ' ' . $value;
   }
   return $var; // It says I'm getting unidentified index $_POST['name']
}

?>

2 个答案:

答案 0 :(得分:4)

PHP在GET / POST中期望key=value对。你传递的是一个没有名字的单片字符串,所以PHP没有可用于将该字符串放入$ _POST的密钥

尝试

data: {foo: stringArray}

$_POST['foo']

代替。

答案 1 :(得分:0)

您应该为您尝试发送到后端的值提供一个密钥,而您实际上并不需要将其作为字符串发送。像那样:

$.ajax({
   type: 'POST',
   url: '/test',
   data: {users: objectArray },
   success: function(response)
   {
      alert(response);
   }   
});

然后,在您的后端,您应该访问您发送的密钥。像那样:

public function test()
{
   $var = '';
   foreach($_POST['users'] as $value) // use the right key
   {
       $var .= ' ' . $value['name'];
   }
   return $var;
}