2016-02-29 37 views
0

我想獲取一些數據發送到PHP頁面來更新PHP會話變量。我嘗試了幾個不同的例子,但我似乎無法找到任何工作。數據永遠不會在PHP頁面上收到。ajax post方法沒有獲取數據在PHP頁面

這裏是我的Javascript/jQuery的:

var str, ProductID, sessionValues= []; 
ProductID = "1"; 
str = {"ProductID": ProductID, "State": "UNCHECKED"}; 
sessionValues.push(str); 
ProductID = "2"; 
str = {"ProductID": ProductID, "State": "CHECKED"}; 
sessionValues.push(str); 

var postObj = {"sessionData": sessionValues}; 
console.log(postObj); 

$.ajax({ 
    type: 'POST', 
    contentType : 'application/json', 
    data: {'data': JSON.stringify(postObj)}, 
    url: 'setSession.php' 
}).done(function(response){ 
     console.log(response); 
    }).fail(function(jqXHR, textStatus, errorThrown){ 
     alert('FAILED! ERROR: ' + errorThrown); 
}); 

這是我的數據對象是什麼樣子:

Console image

然後在PHP端我得到的是我提供的錯誤foreach無效的參數。不管我多次重複sessionValues.push(str),我的瀏覽器總是報告528個字節。

<?php 
$data = json_decode($_POST['data']); 
print_r($data); 
foreach ($data->sessionData as $key => $value) { 
    echo "$key => $value"; 
} 
?> 
+3

* 「然後,在PHP端我得到的是我提供了無效參數的foreach一個錯誤。」 * - Errr ... *什麼* PHP? –

+0

你也可以分享PHP代碼嗎? –

+0

...不,我們只是離開它。記得,我們是「優點」? @MatthewLymer我們讀的是頭腦,而不是代碼。 –

回答

1

您需要刪除contentType : 'application/json',,因爲這不是您要發送的內容。

當你做派爲application/json正確...字符串化整個對象,不只是它的一部分,然後$_POST將是空的,你必須使用json_decode(file_get_contents('php://input'))

也沒有必要字符串化訪問數據你的另一對象... jQuery將形成編碼爲您和您可以訪問它作爲陣列

嘗試

JS

$.ajax({ 
    type: 'POST',   
    data: {'data': postObj}, 
    url: 'setSession.php' 
}).done(function(response){ 

PHP

<?php 
$data = $_POST['data']; 

foreach ($data['sessionData'] as $key => $value) { 
    echo "$key => $value"; 
} 
?> 
+0

謝謝!數據現在在Php端。控制檯中的輸出只是'0 => Array1 => Array',但只要它在那裏,我就可以繼續前進! – user1601513

+0

charlietfl發佈了問題的正確答案。其他人都在這個問題上獨佔鰲頭。這意味着如果你只是一個想要說些什麼的小丑,那麼你就拉扯特朗普。 – user1601513