2016-07-09 12 views
0

私はAJAXを介してサーバー側のPHPスクリプトに配列を送信するjavascriptを持っています。AJAXを介して配列を送信できません

私は以下の私の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); 

しかし、私はそれを実行すると、私はエラーを取得: 警告:破():行に****に渡された無効な引数を16

助けてください。私はこれに1時間を費やしており、それを理解することができません。私は正しい方法でデータを送信していますか?

何か指摘していただければ幸いです。

あなたはその後、PHP(サーバ側)に送信JSONへのあなたの配列を変換する必要が

答えて

2

$.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); 
//..... 
//..... 
+0

これは必須ではありません。形式のエンコードされたデータを配列として受け取っても問題ありません – charlietfl

+0

あなたは正しいです! –

2

contentType: "application/json; charset=utf-8",を削除し、フォームの配列として受け取ることになります$.ajaxデフォルトの

また、を使用して、エンコードされたデータ(アプリケーション/ x-www-form-urlencoded)の代わりにlength、PHPの場合

関連する問題