2014-01-10 3 views
0

다음은 ajax 호출을 만드는 함수입니다. 다음은 파이어 폭스에서 자바 스크립트 디버거에 의해 주어진 연결되는 매개 변수는 다음과 같습니다Jquery Ajax 요청이 잘못되었습니다 - 뭔가 빠졌거나 잘못되었습니다.

JSON.stringify(c) = {"start":0,"length":20,"sortBy":"dc","sortAscending":false,"providerId":128391,"currencyIds":[],"fromDateStr":"2007-01-01","toDateStr":"2014-01-10","validTrades":true,"lotSize":2} 

b.resolveUrl(e) = "http://localhost/j1/test/proxy.php" 
g = [object Window] 
b = [object Object] 
a.isFunction(d) && d.call(g, c, f, g) = false 

기능 :

a.ajax(a.extend({ 
     type: "POST", 
     dataType: "json", 
     contentType: "application/json; charset=utf-8", 
     data: JSON.stringify(c), 
     url: b.resolveUrl(e), 
     context: g, 
     cache: !1, 
     success: function (c, e, d) { 
      a.isFunction(f) && 
       f.call(g, "undefined" != typeof c.d ? b.parseJSON(c.d) : c, g, e, d) 
     }, 
     error: function (b, c, f) { 
      a.isFunction(d) && d.call(g, c, f, g) 
     } 
    }, h)) 

왜이 오류거야? 뭐가 문제 야? 나는 데이터가 올바르게 게시되어 있는지 확인하여 proxy.php 파일의 시작 부분에 다음을 삽입했습니다 : "POST 실패"내가 볼 요청의 응답에서

if(empty($_POST)) die("POST failed!"); 

메시지.

+0

AJAX 요청을 단순화하여 제대로 작동하는지 확인하십시오. '$ .ajax ({type : 'POST', 데이터 : '테스트', url : '/ j1/test/proxy.php'})'. 그런 다음 다시 중단 될 때까지 나머지 Ajax 옵션을 추가하기 시작하십시오. –

+0

'data'는 문자열 화 된 객체를 기대하지 않습니다. 일반 json 객체 또는 쿼리 문자열 ('val = bla & foo = bar')을 시도하십시오. 그러나 요청이있는 그대로 작동하면 PHP는'$ _POST' 배열로 구문 분석 할 수 없으므로 원시 게시 값 ('http_get_request_body()')을 가져옵니다. – towr

답변

0

양식으로 인코딩 된 데이터가 아닌 json 인 것처럼 보입니다. 이것은 PHP가 데이터를 추출 할 수 없으므로 결과적으로 비어있는 $_POST에 넣을 수 있음을 의미합니다.

데이터가 제대로 전송 된 경우 http_get_request_body()에서 그것을 얻을 당신이 원하는 경우

을 (대신 개체의 연관 배열을 원하는 경우 true로 두 번째 인수를 설정) json_decode()으로 디코딩 할 수 있어야한다 $_POST에있는 데이터를 수신하려면 JSON.stringify을 클라이언트 측의 데이터에 적용하지 마십시오. jQuery는 객체를 form-encode하는데 매우 만족합니다.

관련 문제