无法通过AJAX发送数组

时间:2016-07-09 00:12:17

标签: javascript php jquery arrays ajax

我有一个通过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行****中传递的参数无效

请帮忙。我花了一个小时就此,我无法弄明白。我是否以正确的方式发送数据?

任何指针都会受到赞赏。

2 个答案:

答案 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