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( "%22%20+%20wedding%20+%20val%20+%22" );

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值