programing

항상 jQuery Ajax에 대한 게시 데이터에서 JSON.stringify를 호출합니다.

megabox 2023. 10. 21. 10:17
반응형

항상 jQuery Ajax에 대한 게시 데이터에서 JSON.stringify를 호출합니다.

또는 해당 사항에 대해 데이터를 사전 처리하는 다른 기능 :)

제 서버측 프레임워크 때문에, 저는 불필요한 보일러 플레이트인 제 데이터를 보내기 전에 항상 JSON.stringify에 전화해야 합니다.

지금 당장은 다음과

$.ajax({
    [...]
    data: JSON.stringify({ someData: self.someData }),
    [...]
});

저는 다음을 선호합니다.

$.ajax({
    [...]
    data: { someData: self.someData },
    [...]
});

아약스 셋업에 대해 알아봤는데 해결책을 찾을 수가 없어서 지금까지...

갱신하다

이것이 필요한 이유는 다음 질문을 참조하십시오.서버 쪽에서 고칠 수는 있겠지만, 지금은 클라이언트 쪽에서 고칠 방법을 찾고 있습니다.

아니요, 객체에서 JSON으로 데이터를 사전 처리하는 기본 제공 방법은 없습니다.그러나 사용할 수 있습니다.ajaxSetup그리고.beforeSend당신을 위해 그것을 할 것입니다.

$.ajaxSetup({
    beforeSend: function(jqXHR,options){
        if ( options.contentType == "application/json" && typeof options.data != "string" ) {
            options.data = JSON.stringify(options.data);
        }
    }
});

이제 당신의 것을 꼭 설정하세요.contentType로.application/jsonif문에 걸리도록 json을 서버로 보내야 하는 요청에 대해.

jQuery.prefilter를 사용하는 대체 접근 방식은 다음과 같습니다.

$.ajaxPrefilter("json", function(options, originalOptions) {
  options.data = JSON.stringify(originalOptions.data || null);
  options.contentType = "application/json" // content type of *request*
});

$.ajax({
  data: {foo: [1,2,3]},
  dataType: "json" // expected content type of *response* (must match prefilter, above!)
  [...]
});

프리필터가 일치하기 때문에dataType옵션, 우리는 그것을 수동으로 설정해야 합니다.$.ajax부탁한다.만약에dataType요청이 전송되기 전에 프리필터("json")와 일치합니다.data문자열에 오브젝트를 적용하고 설정합니다.contentType일치할 헤더("애플리케이션/json").

이것은 모든 미래에 영향을 미칠 전 세계적인 변화임을 명심하십시오.$.ajax와의 요청dataType: "json"!

여기 내가 사용하는 jQuery.prefilter 기능(이전 전송 접근 방식보다 개선됨)이 있습니다. 이 기능은 모든 데이터 유형과 일치하며 게시물 또는 풋 요청에 있는 모든 개체를 직렬화합니다.

$.ajaxPrefilter(function (options, org) {
    var rtype = options.type.toLowerCase();
    if ((rtype === "post" || rtype === "put") && org.data !== null && typeof org.data === 'object') {
        options.data = JSON.stringify(org.data);
    }
});

도움이 되기를 바랍니다.

사용자 Jquery.getJSON().json 데이터를 직접 얻을 수 있습니다.

$.getJSON('', function(data) {

//you can use data.
});

http://api.jquery.com/jQuery.getJSON/

언급URL : https://stackoverflow.com/questions/17215981/always-call-json-stringify-on-post-data-for-jquery-ajax

반응형