ajax 成功回调函数,jQuery的阿贾克斯成功回调函数定义jQuery的阿贾克斯成功回调函数定义(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
}
Answer 1:
只需使用:
function getData() {
$.ajax({
url : 'example.com',
type: 'GET',
success : handleData
})
}
的success屬性只需要一個函數的引用,并將該數據作為參數給此函數。
您可以訪問handleData功能這樣的,因為這樣handleData聲明。 JavaScript的將解析你的函數聲明代碼在運行它之前,所以你可以使用代碼函數實際申報前,那是。 這就是所謂的吊裝 。
這不計數聲明如下功能,雖然:
var myfunction = function(){}
那些只可在翻譯時與他們擦肩而過。
看到這個問題有關的聲明函數的2種方式的更多信息
Answer 2:
因為jQuery的1.5(2011年1月),這樣做的“新”的方式是使用強似延期對象success的回調。 您應該返回的結果$.ajax ,然后使用.done , .fail等方法來添加外的回調$.ajax調用 。
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功能是一件好事! 。
Deferreds還允許多個異步事件,你不能輕易地只是做容易得多同步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的動畫。
Answer 3:
我不知道你為什么要定義的腳本之外的參數。 這是不必要的。 回調函數將返回的數據作為自動參數來調用。 這是非常可能的定義外回調sucess:即
function getData() {
$.ajax({
url : 'example.com',
type: 'GET',
success : handleData
})
}
function handleData(data) {
alert(data);
//do some stuff
}
該handleData函數將被調用,參數由AJAX功能傳遞給它。
Answer 4:
請嘗試重寫你的成功處理程序:
success : handleData
阿賈克斯方法的成功屬性只需要一個對函數的引用。
在你handleData功能,您可以長達3個參數:
object data
string textStatus
jqXHR jqXHR
Answer 5:
我會寫:
var handleData = function (data) {
alert(data);
//do some stuff
}
function getData() {
$.ajax({
url : 'example.com',
type: 'GET',
success : handleData
})
}
Answer 6:
經過幾個小時玩它幾乎變得遲鈍。 奇跡來找我,它的工作。
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( "" );
listname.push(val);
}
});
}
function myfunction() {
alert (listname);
}
Answer 7:
你并不需要聲明變量。 Ajax的成功函數自動進行最多3個參數: Function( Object data, String textStatus, jqXHR jqXHR )
Answer 8:
在你的組件,即角JS代碼:
function getData(){
window.location.href = 'http://localhost:1036/api/Employee/GetExcelData';
}
文章來源: jQuery ajax success callback function definition
總結
以上是生活随笔為你收集整理的ajax 成功回调函数,jQuery的阿贾克斯成功回调函数定义jQuery的阿贾克斯成功回调函数定义(jQuery ajax...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 文件服务器文件多备份方案,windows
- 下一篇: 传统存储方式_分布式存储 vs 传统SA