2014-10-08 61 views
2

我很困惑。在从ajax传递数据后,如何捕获php端的值。最初,我把数据放入一个对象Array中。在通过Ajax传递数据时,是否将它作为字符串数组或字符串传递?这是否意味着我需要stringify()它?从ajax捕获php方面的数据

我在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'] 
} 

?> 

回答

4

PHP预计key=value对在GET/POST。你传递一个单片字符串没有名字,所以PHP没有可用的关键,将这个字符串变成$ _ POST

尝试

data: {foo: stringArray} 

$_POST['foo'] 

代替。

+0

谢谢!这有帮助。我得到了回复现在返回的值 – learntosucceed 2014-10-08 18:58:12

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; 
} 
+0

感谢您的提示!现在我需要重新考虑这一点。现在,我有两个不同的数据在数组中,所以我可能不得不做一个循环来获取键和值对 – learntosucceed 2014-10-08 19:00:49