繁体   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