jQuery's ajaxSetup - GET 요청에 대해서만 기본 데이터를 추가하려고 합니다.
Ajax 기반 사이트에서 AjaxSetup을 사용하여 다음과 같은 기본 데이터를 추가했습니다.
var revision = '159';
$.ajaxSetup({
dataType: "text json",
contentType: "application/x-www-form-urlencoded; charset=UTF-8",
data: {
r: revision
}
});
이는 새 리비전이 배포되고 프런트엔드가 백엔드에서 html 템플릿 또는 json-data를 요청할 때 캐시 누락을 보장하기 위한 것입니다.이러한 이유로 백엔드와 프런트엔드는 동일한 리비전 번호를 공유합니다.
문제는 프런트엔드가 PUT, POST 또는 DELETE를 수행할 때 백엔드가 매개 변수 'r'을 얻는 것에 대해 다소 불만을 느낀다는 것입니다.JQuery의 Ajax에게 이 데이터는 GET 요청을 수행할 때만 사용해야 하며 POST, PUT 또는 DELETE 요청을 수행할 때는 사용하지 않아야 한다고 말할 수 있는 방법이 없습니까?
업데이트:
나는 알고 있었기 때문에 먼저 beforeSend 기능을 사용해 보았습니다.그러나 settings.data를 변경하는 것은 가능했지만 Send가 돌아오기 전에 변경 사항이 사라지는 것처럼 보였습니다.내 잘못이었는지도.. :-)
나는 대신에 ajax PreFilter에 정착했습니다.하지만 그것은 파이처럼 쉽지 않았습니다.options.data는 객체가 아니라 $.param(object)의 결과이므로 첫 번째 과제는 매개 변수를 해제하는 것이었습니다.저는 결국 이렇게 되었습니다.
var revision = '159';
$.ajaxPrefilter(function (options, originalOptions, jqXHR) {
// do not send data for POST/PUT/DELETE
if (originalOptions.type !== 'GET' || options.type !== 'GET') {
return;
}
var data = originalOptions.data;
if (originalOptions.data !== undefined) {
if (Object.prototype.toString.call(originalOptions.data) === '[object String]') {
data = $.deparam(originalOptions.data); // see http://benalman.com/code/projects/jquery-bbq/examples/deparam/
}
} else {
data = {};
}
options.data = $.param($.extend(data, { r: revision }));
});
jQuery 1.5부터는 Prefilters를 통해 훨씬 더 우아하게 처리할 수 있습니다.
var revision = '159';
$.ajaxPrefilter(function (options, originalOptions, jqXHR) {
// do not send data for POST/PUT/DELETE
if(originalOptions.type !== 'GET' || options.type !== 'GET') {
return;
}
options.data = $.extend(originalOptions.data, { r: revision });
});
제 생각에 당신이 사용할 수 있는 것은beforeSend
.
var revision = '159';
$.ajaxSetup({
dataType: "json",
contentType: "application/x-www-form-urlencoded; charset=UTF-8",
beforeSend: function(jqXHR, settings) {
if(settings.type == "GET")
settings.data = $.extend(settings.data, { ... });
return true;
}
});
제가 이 블라인드를 코딩했으니 올바른 방향으로 나아가길 바랍니다.
언급URL : https://stackoverflow.com/questions/6996993/jquerys-ajaxsetup-i-would-like-to-add-default-data-for-get-requests-only
'source' 카테고리의 다른 글
Python 코드용 Vim 폴딩을 사용하는 권장 방법은 무엇입니까? (0) | 2023.08.25 |
---|---|
Angular Material 및 Jasmine : " 주입을 위한 공급자 없음토큰 MdDialogData!" (0) | 2023.08.25 |
Powershell: 콘텐츠 가져오기 파이프라인에 대한 인코딩 설정 (0) | 2023.08.25 |
Centos 7, WHM High Mysql&MariaDB CPU 사용량 %600 (0) | 2023.08.25 |
Nodemon으로 시작 스크립트를 실행하는 방법 (0) | 2023.08.25 |