2012-07-08 2 views
1

json 데이터에 데이터를 설정하는 표준 자바 스크립트 아약스 호출이 있습니다. JS Ajax가 PHP를 호출하고 아약스 호출 데이터를 가져 오는 중

$.ajax({ 
    type: "POST", 
    url: BaseUrl + "User/Login",  
    //url: BaseUrl + "User/Limit/1/2", 
    data: '{"apiKey":"c7089786-7e3a-462c-a620-d85031f0c826","appIDGiven":"200","userName":"matt2","password":"pass"}', 
    success: function(data){ 
     console.log(data); 
    }, 
    error: function(request){ 
     console.log(request); 
    }, 
}); 

나는이 작동하지 않습니다 PHP $_POST["data"]의 데이터를 얻으려고 노력했다.
그러나 data: 'test={"apiKey":"c7089786-7e3a-462c-a620-d85031f0c826","appIDGiven":"200","userName":"matt2","password":"pass"}'이 작동합니다.

아마도 내 프레임 워크 또는 그와 같은 것이 전혀 작동하지 않는다고 궁금합니다. $_POST["data"]이 작업이 불가능하거나 전혀 불가능합니다. 아니면 그 데이터를 얻기 위해 사용할 수있는 다른 것이 있습니까?

편집 :

그래서 프레임 워크 YII 및 Restfullyii이 한 줄 반환 json_decode (file_get_contents ("PHP : // 입력"), true)를 사용하여 데이터를 얻을 수있는 방법이있는 확장;

data = 또는 {data : 필요없이 모든 데이터를 가져 오는 사용자가 $ data [ "userName"]처럼 내 속성에 액세스 할 수 있도록 배열을 반환하는 것 같습니다. 여기서 실제 json 객체는 $ data 여야합니다. -> [ "userName"]. 내가 정말로 json 문자열을 보내고 있기 때문에 내가이 경우에 배열을 얻는다면 내가 잘못했는지 정정 해줄 수 있습니까? json 객체 대

편집 X2 : 그것은 json_decode에 충실 전송되기 때문에

그래서 PHP가

답변

3

디코드 입력 $_POST['data'] 더 나은 것입니다.
그것은 제대로 전달하기 위해 JSON 형식이어야합니다 (그것은 또한 문자열 형식에있을 수 있지만 그러나 당신은 서버 측에서 구문 분석해야합니다) 아래의 코드를 잘 작동한다

:

$.ajax({ 
    type: "post", 
    url: BaseUrl + "User/Login", 
    data: {"apiKey":"c7089786-7e3a-462c-a620-d85031f0c826","appIDGiven":"200","userName":"matt2","password":"pass"}, 
    success: function(data){ 
     console.log(data); 
    }, 
    error: function(request){ 
     console.log(request); 
    } 
}); 

서버 쪽에서 시도하십시오 : $_POST['apiKey']$_POST['appIDGiven'] 등등.

+0

확실하지는 않지만 데이터가 항상 서버에 문자열로 전송됩니다. – MrB

+0

@MrB 예, 결국 문자열로 전송되지만 서버/클라이언트 측의 해석은 다릅니다. – tftd

1

data 옵션이 있어야합니다 .. 그에게 ASSOC 배열을하는 object 또는 직렬화 (예 "name1=value1&name2=value2"를) string.So 당신은 다음과 같이 전달해야

data: /*object*/{data:'{"apiKey":"c7089786-7e3a-462c-a620-d85031f0c826","appIDGiven":"200","userName":"matt2","password":"pass"}'}, 
       // ^-----this is added for $_POST["data"] 

또는 같은 :

data: /*serialized string*/'data={"apiKey":"c7089786-7e3a-462c-a620-d85031f0c826","appIDGiven":"200","userName":"matt2","password":"pass"}', 
          // ^-----this is added for $_POST["data"] 
0

먼저 전송되는 데이터는 JSON 객체이어야하며 문자열이 아니어야합니다. 따옴표를 제거하십시오. 또한

, 서버 측에서, 당신은 내가 당신의 코드에 문제가 당신이 data: '{....}'을 설정 라인에 생각 json_decode() (documentaion 참조)

관련 문제