我有一个通过AJAX将数组发送到服务器端PHP脚本的javascript。
我附上了我的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行****中传递的参数无效
请帮忙。我花了一个小时就此,我无法弄明白。我是否以正确的方式发送数据?
任何指针都会受到赞赏。
答案 0 :(得分:2)
您需要将数组转换为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);
//.....
//.....
答案 1 :(得分:2)
删除contentType: "application/json; charset=utf-8",
,您将收到表格编码数据(application / x-www-form-urlencoded),$.ajax
默认
在php中使用count()
代替length