1
JavaScript代碼發送的數據:PHP無法讀取jQuery.ajax POST
var data = {"hiSO": "my very complex - nested objects/arrays - data object"};
var j = jQuery.noConflict();
j.ajax({
type: "POST",
url: "postTestingResult.php",
contentType: "application/json; charset=utf-8",
data: {"data": JSON.stringify(data)},
dataType: "json",
success: ajaxSuccess,
error: ajaxError
});
PHP代碼:
header('Content-Type: application/json');
if(!empty($_POST['data'])) {
$data = json_decode($_POST['data']);
//do things with data
echo json_encode(array("success" => "thanks for the info!"));
} else {
echo json_encode(array("error" => "'data' is not set or is NULL"));
}
無論我如何組織數據,$ _ POST [ '數據' ]似乎總是空的(具體來說,未定義)。如果您需要我正在使用的數據對象的完整副本,請查看this JSFiddle。感謝幫助,謝謝!
謝謝!我不確定我會永遠那樣!我編輯我的問題,包括var j = jQuery.noConflict();以消除對他人的困惑。 –
作爲後續問題,我有什麼理由不應該將它作爲JSON發送?我可以簡單地發送它嗎?我一直認爲它必須採用某種格式,JSON和XML是兩種最流行的格式。 –
@MatthewHerbst:您必須以* some *格式發送數據。 *發送*到服務器的最流行的格式是URI編碼(技術上,'application/x-www-form-urlencoded; charset = UTF-8'),這就是你在外層使用的POST包含一個URI編碼的字段「data」;該字段的值是一個JSON字符串)。從服務器發送數據到客戶端的流行格式是JSON和XML。爲了將複雜的數據發送到服務器,JSON-over-URI編碼(你所做的)看起來很好,我過去也用過它。 –