[英]How to send Array thru .post in jQuery?
這是我的代碼不起作用:
var sessionListJSON = GatherSessionsFromPage();
$.post('ajax.php', {
_ExportMissingAddressesToXLS : 1,
sessions : sessionListJSON // ARRAY
}, function(data) {
});
這是我的php
嘗試抓住它:
else if (array_key_exists('_ExportMissingAddressesToXLS', $_POST)) { // {{{
$sessions = $_POST['sessions'];
ExportMissingParentAddressesToXLS($sessions);
} // }}}
如何通過此jQuery
.post
正確發送此數組,然后在PHP中檢索它? 這也就是序列化的情況嗎? 如果是這樣,你如何為JS / jQuery做這個?
jQuery在$.post()
自動為您序列化數組。 在PHP中,如果sessionListJSON
是一個數組, $_POST['sessions']
將是一個數組。 您可以使用普通的數組索引, foreach
等訪問它。
如果sessionListJSON
確實是一個JSON字符串,則需要在PHP中對其進行解碼:
$session = json_decode($_POST['sessions']);
當我在javascript和PHP之間傳遞任何復雜的數據結構時,我的建議是使用JSON序列化/反序列化而不依賴於$_POST
行為。
這可能在javascript / jQuery中看起來像這樣。
var json = JSON.stringify({
_ExportMissingAddressesToXLS : 1,
sessions : sessionListJSON // ARRAY
});
$.ajax({
type: 'POST',
url: 'ajax.php',
contentType: 'application/json',
dataType: 'json', // if you expect JSON in return
data: json, // your JSON string here
success: // your success handler
error: // your error handler
});
在PHP方面,由於您不處理表單編碼數據,因此您需要閱讀PHP的原始輸入。 幸運的是,這非常簡單,將POST數據轉換為PHP對象/數組非常簡單。 這很簡單:
$json = file_get_contents('php://input');
$variable = json_decode($json);
請注意,使用默認的json_decode()
行為,您實際上會獲得一個可以使用的對象
if($variable->_ExportMissingAddressesToXLS === 1) {
$sessions = $variable->sessions;
ExportMissingParentAddressesToXLS($sessions);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.