簡體   English   中英

如何通過POST AJAX將JS數組傳遞給PHP?

[英]How to pass JS array via POST AJAX to PHP?

這是我的代碼:

var var_ids = new Array();
var i = 0;
jQuery("select").each(function() {
var_ids[i] = jQuery("option:selected",this).val();
i++;
}

var $data = {
action: "do_something",
var_ids: var_ids,
};
jQuery.post(doajax.ajaxurl, $data, function(response) {
    alert(response);

}); 

在我的php中:

$ids = mysql_real_escape_string(trim($_POST['var_ids']));
exit(print_r($ids));

它只是返回垃圾...所以我的問題是如何通過AJAX傳遞數組以發布php?

謝謝。

因為將字符串相關的函數trimmysql_real_escape_string應用於數組 $_POST['var_ids']最有可能獲得意外結果

只要它只是一個整數數組-所需的唯一mysql清理是強制轉換為int:

$ids = array_map('intval', $_POST['var_ids']);
print_r($ids);

$ _POST ['var_ids']是示例中PHP端的數組。 您只能在字符串而不是數組上調用trim和mysql_real_escape_string。 嘗試在php中:

$postData = isset($_POST['var_ids'])?$_POST['var_ids']):null;
if(is_array($postData)){
    foreach($postData as $key=>$value){
        $postData[$key] =  mysql_real_escape_string(trim($value));
    }
}

Viola,$ postData現在是一個帶有修剪和轉義值的PHP數組。

文檔中,大約有1/4的方式將標題數據數組傳遞給服務器

    var var_ids = new Array('10','12','13');
    var $data = {
    action: "do_something",
    'var_ids[]': var_ids,
    };
    jQuery.post(doajax.ajaxurl, $data, function(response) {
        alert(response);

    }); 

使它成為json_encoded數組...然后,您可以正確地對json_decode()數組。

最好將數組轉換為JSON對象(Javascript對象表示法)並以這種方式發送。

Javascript JSON指令

JSON PHP參考

您可以使用鍵items[]來發布每個項目,然后可以以$_POST['items']訪問數組,也可以序列化數組,發送並在PHP中進行JSON.stringify序列化( JSON.stringify和PHP json_decode ) 。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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