angularjs
2013-07-17 1 views 0 likes 
0

AngularJS $ http 호출을 통해 연관 배열을 잡으려고 시도하지만 실제 배열을 가져 오는 대신 배열 "문자열"을 가져옵니다. 여기

내 $의 HTTP 호출입니다 :

$http({ 
      method : 'POST', 
      url : '[myPHPfile].php', 
      data : 'data=' + $scope.placementID, 
      headers : { 'Content-Type' : 'application/x-www-form-urlencoded' } 
     }).success(function(data) { 
      alert(data); 
     }); 

그리고 이것은 .PHP [myPHPfile] (생략 다른 라인)입니다 :

echo someFunctionInAnotherFile($_POST['data']); 

에코 위해서 var_dump를하고 있기 때문에 내가 배열을 잡아하고 알고 은 $ HTTP 호출의 성공 부분에 [myPHPfile] .PHP에서 (theArray) 및 경고 (데이터), 내가 얻을 :

array(8) { 
    ["id"]=> string(1) "2" 
    ["id_key"]=> 
    string(1) "2" 
    ... 
} 

그러나 지혜 hout var_dump, 그리고 나는 alert (data [ "id"])를 성공했다. 아무 일도 일어나지 않는다. 그리고 경고 (data [1])를하면 "r"이 나오므로 반환 된 데이터가 "Array"라는 문자열이되는 이유를 모르겠습니다.

[myPHPfile] .php에서 echo json_encode (...)를 시도하고 경고음 (JSON.parse (data))이 성공했으나 작동하지 않았습니다.

단순한 어레이에 액세스하려고하는데 도움이 필요합니다. 여기 :(

답변

-1

몇 가지 문제를 해결합니다.

로 json_encode() PHP는 작동하지만 헤더가 올바르게 설정되어 있는지 확인해야합니다에서.

<?php 
    header('Content-type: application/json'); 
    echo json_encode(someFunctionInAnotherFile($_POST['data'])); 
?> 

두 번째 문제는 "그로 json_encode는 PHP를 켜 것이다 연관 "배열과 달리 규칙적인 배열을"배열이 경우 객체에 "배열입니다.

는, 원시 포스트 데이터를 표시하는 것은 매우 위험

마지막이다 하고 당신이 그것을 할해서는 안된다.

+0

헤더를 추가하고 경고 (JSON.parse (data))뿐만 아니라 다음을 시도했습니다. var test = JSON.parse (data); alert (test [ "id"]); 은 자바 스크립트 끝이지만 아무 것도 반환하지 않습니다. 그것은 [객체 객체]가 전달되는 것입니다. –

+0

@JeffZhan 한 번에 한 가지만 디버깅해야합니다. 브라우저에서 방문했을 때 PHP 파일이 이해하는 구조를 반향시키고 있는지 확인하십시오. 그 후에 javascript 측에서 console.log (데이터)를 사용하면 Chrome 콘솔을 사용하여 데이터를 검사 할 수 있습니다. JSON 배열이 아닌 연관 배열/JSON 객체로 끝나면 'echo json_encode (array_values ​​($ returnedData));'를 사용할 수 있습니다. – shaunhusain

+0

@shaunhusain이 언급했듯이 console.log를 사용하고 싶습니다. JSON.parse가 필요하다고 생각하지 않습니다. 올바르게 기억한다면 $ http가 MIME 유형이 제대로 설정하십시오. –

관련 문제