2016-07-09 6 views
0

AJAX를 통해 배열을 서버 측 PHP 스크립트로 보내는 자바 스크립트가 있습니다.AJAX를 통해 배열을 보낼 수 없습니다.

내가 아래에있는 내 자바 스크립트 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)도 사용하십시오. count() 대신 length을 입력하십시오.

관련 문제