这是我的代码:
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?
谢谢。
答案 0 :(得分:2)
您很可能会收到意外结果,因为您将与字符串相关的函数trim
和mysql_real_escape_string
应用于数组 $_POST['var_ids']
只要它只是一个整数数组 - 你需要的唯一mysql清理就是转换为int:
$ids = array_map('intval', $_POST['var_ids']);
print_r($ids);
答案 1 :(得分:2)
$ _ 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数组。
答案 2 :(得分:1)
它位于docs大约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);
});
答案 3 :(得分:1)
使它成为json_encoded数组...然后你可以正确地json_decode()数组。
答案 4 :(得分:1)
您可以更好地将数组转换为JSON对象(Javascript Object Notation)并以此方式发送。
答案 5 :(得分:0)
您可以使用键items[]
发布每个项目,然后您可以将数组作为$_POST['items']
访问,或者您可以序列化数组,发送它并在PHP中反序列化({{1}和PHP JSON.stringify
)。