2016-05-04 196 views
0

目標:序列化數據,使用AJAX給他們在HTTP POST請求,在PHP(和答案)進行數據

問題: PHP $ _POST變量似乎是空

JS/AJAX

var postData = [cmd, data]; 
alert(postData = JSON.stringify(postData)); 

$.ajax({ 
    url: "./backendTag.php", 
    type: "post", 
    data: postData, 
    dataType: 'json', 
    success: function (response) { 
     alert(response); // Empty 
     //logToServerConsole(JSON.parse(response)); 
    }, 
    error: function(jqXHR, textStatus, errorThrown) { 
     logToServerConsole("E3"); // Communication Error 
     console.log(textStatus, errorThrown); 
    } 
}); 

PHP

<?php echo json_encode($_POST); 

回答

1

的原因相同,可能是因爲你沒有在JavaScript中正確發佈。在添加代碼之前,讓我添加一些關於如何在這些情況下進行調試的提示。

首先,您檢查請求是否正確形成。在瀏覽器開發工具中檢查網絡。

第二種方法可能是用var_dump在$ _ POST,列出所有的POST參數,並檢查他們是否在PHP

現在已經收到儘可能的代碼放在

這裏是JavaScript

$.ajax({ 
    method: "POST", 
    url: "url.php", 
    data: { name: "John Doe", age: "19" } 
}).done(function(msg) { 
    alert(msg); 
}); 

,並在PHP中,你可以簡單地檢查使用

<?php 
print $_POST["name"]; 
?> 

這將完美工作。注意javascript中的數據是一個列表,而你寫的似乎是json字符串

-1

JSON內容不會被解析爲$ _POST全局變量。如果你想達到這些目標,試圖從PHP獲取://用輸入:

file_get_contents('php://input') 

而Ajax請求期間我建議給內容類型:

contentType: 'application/json', 

如果它不工作,嘗試設置數據作爲一個字符串,JSON.Stringify,如下所示:

data: JSON.stringify(postData) 
0

顯然我們不能在序列化後直接傳遞一個數組。以下代碼解決了這個問題。 (Split array)

data = JSON.stringify(data); 
var JSONdata = {"cmd" : cmd, "data" : data}; 

$.ajax({ 
    url: "./backendTag.php", 
    type: "post", 
    data: JSONata, 
    dataType: 'json', 

    /* Handlers hidden*/ 
}); 
+0

問題是:什麼是一個更大的數組,我們必須做一個循環來這樣設置格式嗎? –

+0

爲什麼必須將數據串化? – mtizziani