[英]Unable to send an array through AJAX
我有一个JavaScript,可通过AJAX将数组发送到服务器端PHP脚本。
我在下面附加了我的javascript AJAX函数的相关代码段:
$.ajax({
url: "bar2.php",
type: "POST",
data:{data:x},
dataType: "json",
contentType: "application/json; charset=utf-8",
error: function(xhr, status, error) {
console.log(status);console.log(error);
},
success:function(data){
//do stuff
}
}
);
x是我要发送的数组。
我在PHP脚本中访问此数组,如下所示:
$data = $_REQUEST['data'];
$len = $data.length;
$x=format_array($data);
function format_array($data){
return "'" . implode("', '", $data) . "'";
}
$myquery = "
select state,count(device_id) as c_num from base_data where state
IN($x)group by state order by c_num DESC limit 10;
";
$query = mysql_query($myquery);
但是,当我运行它时,出现错误:警告:implode():第16行的****中传递了无效的参数
请帮忙。 我已经花了一个小时,却无法解决。 我是否以正确的方式发送数据?
任何指针将不胜感激。
您需要将数组转换为JSON,然后将其发送到PHP(服务器端):
$.ajax({
url: "bar2.php",
type: "POST",
data: {data: JSON.stringify(x)},
dataType: "json",
contentType: "application/json; charset=utf-8",
error: function(xhr, status, error) {
console.log(status);console.log(error);
},
success:function(data){
//do stuff
}
});
PHP:
$data = json_decode($_REQUEST['data']);
$len = count($data);
//.....
//.....
删除contentType: "application/json; charset=utf-8",
您将收到表单编码数据数组(application / x-www-form-urlencoded),默认为$.ajax
还可以使用count()
代替php中的length
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.