簡體   English   中英

如何在jQuery中發送Array thru .post?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM