jQuery ajax 성공 콜백 함수 정의
jQuery ajax를 사용하여 서버에서 데이터를 가져옵니다.
성공 콜백 함수 정의를 외부로 내보내고 싶다..ajax()블록은 다음과 같습니다.그럼 변수를 선언해야 하나요?dataFromServer성공 콜백에서 반환된 데이터를 사용할 수 있도록 하기 위해 다음과 같이 하십시오.
대부분의 사람들이 성공 콜백을 정의해 왔습니다..ajax()다음 코드는 성공 콜백을 외부에서 정의하려면 올바른 코드입니까?
var dataFromServer; //declare the variable first
function getData() {
$.ajax({
url : 'example.com',
type: 'GET',
success : handleData(dataFromServer)
})
}
function handleData(data) {
alert(data);
//do some stuff
}
jQuery 1.5(2011년 1월) 이후 이 '새로운' 방법은 다음 명령어를 전달하는 대신 지연 개체를 사용하는 것입니다.success콜백의 결과를 반환해야 합니다.$.ajax그런 다음 를 사용합니다..done,.fail콜 외부에 콜백을 추가하는 메서드를 지정합니다.
function getData() {
return $.ajax({
url : 'example.com',
type: 'GET'
});
}
function handleData(data /* , textStatus, jqXHR */ ) {
alert(data);
//do some stuff
}
getData().done(handleData);
이것에 의해, 콜백 처리와 AJAX의 처리의 분리가 가능하게 되어, 복수의 콜백, 장해 콜백등을 추가할 수 있게 됩니다.이 모든 것을 원래 콜백의 변경은 필요 없습니다.getData()기능.AJAX 기능을 나중에 완료되는 일련의 액션에서 분리하는 것은 좋은 일입니다!
또한 지연을 통해 여러 비동기 이벤트를 훨씬 쉽게 동기화할 수 있습니다.이러한 동기화는 단순히 다음 방법으로는 쉽게 수행할 수 없습니다.success:
예를 들어 여러 콜백(에러 핸들러)을 추가하고 타이머가 경과할 때까지 기다렸다가 계속할 수 있습니다.
// a trivial timer, just for demo purposes -
// it resolves itself after 5 seconds
var timer = $.Deferred();
setTimeout(timer.resolve, 5000);
// add a done handler _and_ an `error:` handler, even though `getData`
// didn't directly expose that functionality
var ajax = getData().done(handleData).fail(error);
$.when(timer, ajax).done(function() {
// this won't be called until *both* the AJAX and the 5s timer have finished
});
ajax.done(function(data) {
// you can add additional callbacks too, even if the AJAX call
// already finished
});
jQuery의 다른 부분에서도 지연 개체를 사용합니다. jQuery 애니메이션을 다른 비동기 작업과 매우 쉽게 동기화할 수 있습니다.
사용방법:
function getData() {
$.ajax({
url : 'example.com',
type: 'GET',
success : handleData
})
}
그success속성은 함수에 대한 참조만 필요하며 데이터를 매개 변수로 이 함수에 전달합니다.
액세스 할 수 있습니다.handleData길 때문에 이렇게 기능하다handleData선언됩니다.JavaScript는 함수 선언을 실행하기 전에 코드를 해석하기 때문에 실제 선언 전 코드에서 함수를 사용할 수 있습니다.이것은 호이스트라고 알려져 있습니다.
단, 다음과 같이 선언된 함수는 포함되지 않습니다.
var myfunction = function(){}
그것들은 통역사가 통과해야만 이용할 수 있다.
함수를 선언하는 두 가지 방법에 대한 자세한 내용은 다음 질문을 참조하십시오.
스크립트 외부에서 파라미터를 정의하는 이유를 알 수 없습니다.그건 불필요합니다.반환 데이터를 매개 변수로 사용하여 콜백 함수가 자동으로 호출됩니다.콜백을 정의할 수 있는 것은,sucess: 말해
function getData() {
$.ajax({
url : 'example.com',
type: 'GET',
success : handleData
})
}
function handleData(data) {
alert(data);
//do some stuff
}
handleData 함수가 호출되고 파라미터가 ajax 함수에 의해 전달됩니다.
성공 핸들러를 다음 위치에 다시 써 보십시오.
success : handleData
ajax 메서드의 성공 속성에는 함수에 대한 참조만 필요합니다.
handleData 함수에서는 최대 3개의 파라미터를 사용할 수 있습니다.
object data
string textStatus
jqXHR jqXHR
나는 다음과 같이 쓰고 싶다.
var handleData = function (data) {
alert(data);
//do some stuff
}
function getData() {
$.ajax({
url : 'example.com',
type: 'GET',
success : handleData
})
}
변수를 선언할 필요는 없습니다.아약스.Function( Object data, String textStatus, jqXHR jqXHR )
몇 시간 동안 그것을 가지고 놀다가 거의 무뎌졌다. 기적이 나에게 왔고, 효과가 있었다.
<pre>
var listname = [];
$.ajax({
url : wedding, // change to your local url, this not work with absolute url
success: function (data) {
callback(data);
}
});
function callback(data) {
$(data).find("a").attr("href", function (i, val) {
if( val.match(/\.(jpe?g|png|gif)$/) ) {
// $('#displayImage1').append( "<img src='" + wedding + val +"'>" );
listname.push(val);
}
});
}
function myfunction() {
alert (listname);
}
</pre>
구성 요소(예: 각도 JS 코드):
function getData(){
window.location.href = 'http://localhost:1036/api/Employee/GetExcelData';
}
언급URL : https://stackoverflow.com/questions/14754619/jquery-ajax-success-callback-function-definition
'programing' 카테고리의 다른 글
| 바이트 배열을 JSON 형식으로 변환합니다. (0) | 2023.02.23 |
|---|---|
| angular 템플릿의 배열 값을 확인하시겠습니까? (0) | 2023.02.23 |
| SQL을 사용하여 날짜 범위 생성 (0) | 2023.02.23 |
| Python json.loads의 제어 문자가 잘못되었습니다. (0) | 2023.02.23 |
| 단일 파일에 대해 더 예쁜 파일 사용 안 함 (0) | 2023.02.23 |