ajax 成功回调函数,jQuery的阿贾克斯成功回调函数定义jQuery的阿贾克斯成功回调函数定义(jQuery ajax...
我想使用jQuery的ajax從服務(wù)器獲取數(shù)據(jù)。
我希望把成功的回調(diào)函數(shù)定義外面.ajax()塊像下面這樣。 所以,我需要聲明變量dataFromServer像下面這樣我就能從成功回調(diào)使用返回的數(shù)據(jù)?
我見(jiàn)過(guò)的大多數(shù)人定義內(nèi)成功回調(diào).ajax()塊。 那么,下面的代碼正確的,如果我想外界定義成功的回調(diào)?
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屬性只需要一個(gè)函數(shù)的引用,并將該數(shù)據(jù)作為參數(shù)給此函數(shù)。
您可以訪問(wèn)handleData功能這樣的,因?yàn)檫@樣handleData聲明。 JavaScript的將解析你的函數(shù)聲明代碼在運(yùn)行它之前,所以你可以使用代碼函數(shù)實(shí)際申報(bào)前,那是。 這就是所謂的吊裝 。
這不計(jì)數(shù)聲明如下功能,雖然:
var myfunction = function(){}
那些只可在翻譯時(shí)與他們擦肩而過(guò)。
看到這個(gè)問(wèn)題有關(guān)的聲明函數(shù)的2種方式的更多信息
Answer 2:
因?yàn)閖Query的1.5(2011年1月),這樣做的“新”的方式是使用強(qiáng)似延期對(duì)象success的回調(diào)。 您應(yīng)該返回的結(jié)果$.ajax ,然后使用.done , .fail等方法來(lái)添加外的回調(diào)$.ajax調(diào)用 。
function getData() {
return $.ajax({
url : 'example.com',
type: 'GET'
});
}
function handleData(data /* , textStatus, jqXHR */ ) {
alert(data);
//do some stuff
}
getData().done(handleData);
這樣可以使回調(diào)從AJAX處理處理,使您可以添加多個(gè)回調(diào),回調(diào)失敗,等等,所有甚至無(wú)需修改原始getData()函數(shù)。 從組動(dòng)作之后完成分離AJAX功能是一件好事! 。
Deferreds還允許多個(gè)異步事件,你不能輕易地只是做容易得多同步success:
例如,我可以添加多個(gè)回調(diào),錯(cuò)誤處理程序,并等待計(jì)時(shí)器繼續(xù)之前的等待:
// 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的其他部分使用延遲對(duì)象太 - 您可以與其他異步操作很容易與他們同步j(luò)Query的動(dòng)畫(huà)。
Answer 3:
我不知道你為什么要定義的腳本之外的參數(shù)。 這是不必要的。 回調(diào)函數(shù)將返回的數(shù)據(jù)作為自動(dòng)參數(shù)來(lái)調(diào)用。 這是非常可能的定義外回調(diào)sucess:即
function getData() {
$.ajax({
url : 'example.com',
type: 'GET',
success : handleData
})
}
function handleData(data) {
alert(data);
//do some stuff
}
該handleData函數(shù)將被調(diào)用,參數(shù)由AJAX功能傳遞給它。
Answer 4:
請(qǐng)嘗試重寫(xiě)你的成功處理程序:
success : handleData
阿賈克斯方法的成功屬性只需要一個(gè)對(duì)函數(shù)的引用。
在你handleData功能,您可以長(zhǎng)達(dá)3個(gè)參數(shù):
object data
string textStatus
jqXHR jqXHR
Answer 5:
我會(huì)寫(xiě):
var handleData = function (data) {
alert(data);
//do some stuff
}
function getData() {
$.ajax({
url : 'example.com',
type: 'GET',
success : handleData
})
}
Answer 6:
經(jīng)過(guò)幾個(gè)小時(shí)玩它幾乎變得遲鈍。 奇跡來(lái)找我,它的工作。
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的成功函數(shù)自動(dòng)進(jìn)行最多3個(gè)參數(shù): Function( Object data, String textStatus, jqXHR jqXHR )
Answer 8:
在你的組件,即角JS代碼:
function getData(){
window.location.href = 'http://localhost:1036/api/Employee/GetExcelData';
}
文章來(lái)源: jQuery ajax success callback function definition
總結(jié)
以上是生活随笔為你收集整理的ajax 成功回调函数,jQuery的阿贾克斯成功回调函数定义jQuery的阿贾克斯成功回调函数定义(jQuery ajax...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 文件服务器文件多备份方案,windows
- 下一篇: 传统存储方式_分布式存储 vs 传统SA