2014-10-08 69 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