programing tip

$ .ajax를 사용하여 쿼리 문자열 대신 JSON을 보내는 방법은 무엇입니까?

itbloger 2020. 5. 30. 22:15
반응형

$ .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에는가 있지만 .parseJSONstringifier는 포함되어 있지 않습니다. 다른 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

반응형