AJAX 호출 데이터를 반환하는 자바스크립트 함수
jQuery AJAX 호출 값을 반환하는 자바스크립트 함수를 만들고 싶습니다.저는 이런 것을 원합니다.
function checkUserIdExists(userid){
return $.ajax({
url: 'theurl',
type: 'GET',
cache: false,
data: {
userid: userid
},
success: function(data){
return data;
}
});
}
동기화를 false로 설정하여 이 작업을 수행할 수 있다는 것을 알고 있지만 그렇지 않습니다.
AJAX 호출을 통해 반환된 데이터는 동기적으로 호출하지 않는 한 반환할 수 없습니다(나를 신뢰하지 않는 한 말입니다.그러나 반환할 수 있는 것은 AJAX 호출을 통해 반환되는 데이터에 대한 약속이며 실제로 매우 우아한 방식으로 수행할 수 있습니다.
(UPDATE: 현재 jQuery Promise는 Promise/A+ 사양과 호환되지 않음 - 자세한 내용은 본 답변 참조)
기본적으로 $.ajax(...) 통화의 반환 값을 반환할 수 있습니다.
function checkUserIdExists(userid){
return $.ajax({
url: 'theurl',
type: 'GET',
cache: false,
data: {
userid: userid
}
});
}
당신의 함수를 호출하는 사람은 다음과 같이 사용할 수 있습니다.
checkUserIdExists(userid).success(function (data) {
// do something with data
});
당신이 관심이 있다면 더 나은 설명과 데모를 위해 이 게시물을 보세요.
콜백 기능을 전달할 수 있습니다.
function checkUserIdExists(userid, callback) {
$.ajax({
...
success: callback
});
}
checkUserIdExists(4, function(data) {
});
jQuery 1.5를 사용하면 새로운 기능을 사용할 수 있으며, 이 기능을 정확히 사용할 수 있습니다.
// Assign handlers immediately after making the request, // and remember the jqxhr object for this request var jqxhr = $.ajax({ url: "example.php" }) .success(function() { alert("success"); }) .error(function() { alert("error"); }) .complete(function() { alert("complete"); }); // perform other work here ... // Set another completion function for the request above jqxhr.complete(function(){ alert("second complete"); });
jQuery 1.8부터는 "성공", "오류" 및 "완전" 콜백이 더 이상 사용되지 않습니다.대신 "done", "fail" 및 "always"를 사용해야 합니다.
그래서 당신은 다음을 가질 수 있었습니다.
function checkUserIdExists(userid, callback) {
return $.ajax({
url: 'theurl',
type: 'GET',
cache: false,
data: {
userid: userid
}
})
.done(callback)
.fail(function(jqXHR, textStatus, errorThrown) {
// Handle error
});
}
checkUserIdExists(2, function(data) {
console.log(data); // Do what you want with the data returned
});
이것은 자바스크립트 비동기 프로그래밍이 실제로 행해지려고 의도한 방식이 아닙니다.대신 성공 함수의 콜백을 사용하여 서버에서 반환된 데이터를 사용하기 위해 다른 함수를 호출합니다.
팀, 두 시나리오는 상호 배타적입니다. 비동기 작업은 어떠한 목적에도 도움이 되지 않으며, 반환된 데이터를 가져올 수도 없습니다.
ajax 호출을 위한 이벤트 지원 인프라스트럭처를 살펴보아야 합니다.
언급URL : https://stackoverflow.com/questions/5150571/javascript-function-that-returns-ajax-call-data
'it-source' 카테고리의 다른 글
왼쪽 자체 가입은 '기본'당 하나의 행을 반환합니다. (0) | 2023.10.23 |
---|---|
두 날짜 사이의 시간 차이(시간 단위)를 구하는 방법 (0) | 2023.10.23 |
ASP.NET MVC 및 뷰 상태 (0) | 2023.10.23 |
플로트 분할을 할 때 이중으로 주조하고 뒤로 주조할 때 정확도가 향상됩니까? (0) | 2023.10.23 |
안드로이드 버전과 코드 버전 번호를 변경하는 방법은? (0) | 2023.10.23 |