2012-12-19 5 views
35

json을 보내려고합니다. 여기 제 기능입니다 :JQuery Post가 JSON이 아닌 양식 데이터를 전송합니다.

var object = ... ; 

$.ajax({ 
     type: 'POST', 
     url: '<url>', 
     contentType: 'application/json; charset=utf-8', 
     dataType: 'json', 
     data: object 
    }); 

하지만 크롬을 확인할 때마다, 항상 검색어 매개 변수로 보냅니다

Request Payload: 
startDate=Wed+Dec+19+2012+19%3A00%3A00+GMT-0500+(EST)&endDate=Thu+Dec+20+2012+19%3A00%3A00+GMT-0500+(EST)& 

는 어떻게하면 JSON으로 보내받을 수 있나요?

답변

55

:

$.ajax({ 
    type: 'POST', 
    url: '<url>', 
    contentType: 'application/json; charset=utf-8', 
    dataType: 'json', 
    data: JSON.stringify(object) 
}); 

참고이 작업은 JSON.stringify는 특정 브라우저 IE7 낮은에, 모든 브라우저 (http://caniuse.com/#feat=json)에서 지원되지 않습니다.

이 당신이 자바 스크립트 라이브러리를 사용할 수 있습니다 너무 브라우저를 지원해야하는 경우 : 나는 쉽게로 JSON과 기본에 '응용 프로그램/x-www-form-urlencoded를'형식으로 데이터를 보낼 발견 https://github.com/douglascrockford/JSON-js

+0

대단히 감사합니다. – Jason

4
JSON.stringify(object)

data 필드 수정하여

캐릭터 라인 화 :

... 
data: JSON.stringify(object), 
... 

당신이 그것을하고있는 방법은, IMO, JQuery와 사전 (키 - 값 쌍)로 매개 변수를보고, 그리고 그로부터 백분위 인코딩 된 문자열을 구성합니다. 따라서 출력을 볼 수 있습니다. JSON.stringify(object)

샘플

+0

감사합니다. 도움/ – ajahongir

-1

이 같은 필드 : 서버에서

$.ajax({ 
    type: 'POST', 
    url: '<url>', 
    dataType: 'json', 
    data: {json:JSON.stringify(object)} 
}); 

필드를받을 수있는 정기적 인 방법을 사용은 json을했다.

이것이 유효한지 확인하기 위해 공유했습니다.

+0

좋은 지적! OP가 서버 설정과 관련하여 원하는 방식/필요 여부에 달려 있습니다. – Ian

관련 문제