繁体   English   中英

无法通过AJAX发送阵列

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM