我很困惑。从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']
}
?>
答案 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;
}