$ .ajax를 사용하여 쿼리 문자열 대신 JSON을 보내는 방법은 무엇입니까?
누군가 jQuery가 쿼리 문자열 대신 실제 JSON을 보내도록 만드는 방법을 쉽게 설명 할 수 있습니까?
$.ajax({
url : url,
dataType : 'json', // I was pretty sure this would do the trick
data : data,
type : 'POST',
complete : callback // etc
});
실제로 신중하게 준비된 JSON을 쿼리 문자열로 변환합니다. 성가신 것 중 하나는 아마도 쿼리 찌르기의 한계로 인해 array: []
객체의 모든 것이로 변환된다는 array[]: []
것입니다.
당신은 사용할 필요가 JSON.stringify
를 지정 먼저 직렬화 JSON에 개체에, 그리고 contentType
서버가 그것의 JSON을 이해 있도록. 트릭을 수행해야합니다.
$.ajax({
url: url,
type: "POST",
data: JSON.stringify(data),
contentType: "application/json",
complete: callback
});
이 JSON
객체는 JavaScript 1.7 / ECMAScript 5 이상을 지원하는 브라우저에서 기본적으로 사용 가능합니다. 레거시 지원이 필요한 경우 json2 를 사용할 수 있습니다 .
아니요, dataType
옵션 은 수신 된 데이터를 구문 분석하는 것입니다.
JSON을 게시하려면 직접 문자열을 JSON.stringify
지정하고 processData
옵션을로 설정해야 합니다 false
.
$.ajax({
url: url,
type: "POST",
data: JSON.stringify(data),
processData: false,
contentType: "application/json; charset=UTF-8",
complete: callback
});
모든 브라우저가 JSON
객체를 지원하는 것은 아니며 jQuery에는가 있지만 .parseJSON
stringifier는 포함되어 있지 않습니다. 다른 polyfill 라이브러리가 필요합니다.
ASP.NET MVC와 같은 많은 아키텍처에는 contentType으로 JSON.stringify를 처리하는 기능이 내장되어 있지만 상황이 조금 다르므로 나중에 누군가를 도울 수 있습니다. 나는 그것이 시간을 절약했을 것임을 알고 있습니다!
내 http 요청이 다른 하위 도메인에있는 IBM (AS400 환경)의 CGI API에 의해 처리되므로이 요청은 교차 출처이므로 jsonp입니다. 실제로 자바 스크립트 객체를 통해 아약스를 보냅니다. 다음은 내 아약스 POST의 예입니다.
var data = {USER : localProfile,
INSTANCE : "HTHACKNEY",
PAGE : $('select[name="PAGE"]').val(),
TITLE : $("input[name='TITLE']").val(),
HTML : html,
STARTDATE : $("input[name='STARTDATE']").val(),
ENDDATE : $("input[name='ENDDATE']").val(),
ARCHIVE : $("input[name='ARCHIVE']").val(),
ACTIVE : $("input[name='ACTIVE']").val(),
URGENT : $("input[name='URGENT']").val(),
AUTHLST : authStr};
//console.log(data);
$.ajax({
type: "POST",
url: "http://www.domian.com/webservicepgm?callback=?",
data: data,
dataType:'jsonp'
}).
done(function(data){
//handle data.WHATEVER
});
If you are sending this back to asp.net and need the data in request.form[] then you'll need to set the content type to "application/x-www-form-urlencoded; charset=utf-8"
Original post here
Secondly get rid of the Datatype, if your not expecting a return the POST will wait for about 4 minutes before failing. See here
참고URL : https://stackoverflow.com/questions/12693947/how-to-send-json-instead-of-a-query-string-with-ajax
'programing tip' 카테고리의 다른 글
Java의 콜백 함수 (0) | 2020.05.30 |
---|---|
C ++에서 텍스트 파일에 텍스트를 추가하는 방법은 무엇입니까? (0) | 2020.05.30 |
if (포인터! = NULL) 대신 if (포인터)를 사용할 수 있습니까? (0) | 2020.05.30 |
"유형화되지 않은"은 또한 학문적 CS 세계에서 "동적 유형화 된"을 의미합니까? (0) | 2020.05.30 |
Arduino 코드를 단위 테스트하려면 어떻게해야합니까? (0) | 2020.05.30 |