AJAX内部回调成功
Callback inside AJAX success
我试图在AJAX成功执行中添加一个可选的回调,但我似乎无法在需要的时候运行回调。
这是我的AJAX代码的一个例子
function someAjaxFunction(hosturl, callback){
$.ajax({
type: "GET",
url: hosturl,
data: {'something': 'code' },
dataType: 'json',
success: function(html){
var arr = $.map(html, function(val) { return val; });
if(arr[0] != 'false'){
console.log('1');
console.log('2');
if (callback) {
console.log('calling the callback')
callback();
}
console.log('3');
}else{
console.log('fail')
}
}
});
}
以下是回调和AJAX如何执行的示例
function thisIsACallBack(){
console.log("i'm a callback");
}
someAjaxFunction("some url", thisIsACallBack);
如果我运行此代码,控制台将输出。
1
2
3
i'm a callback
我甚至可以删除回调if条件,这样我仍然可以得到相同的输出。
这里还有一种更好的方法来处理我的Ajax返回,目前我的响应封装在json对象中。如果数据库找不到对象,我必须在数组中放置"false",并将其转换为json对象,然后将其返回到ajax。
因为您必须将回调作为字符串传递给函数
someAjaxFunction("some url", thisIsACallBack); // <-- Wrong thisIsACallBack will be triggered after someAjaxFunction as some separate function call
像这个
someAjaxFunction("some url", "thisIsACallBack()"); // <- Correct way
// Then call eval( callback ); inside Ajax success
....
success: function(html){
...
eval( callback );
}
你的问题是,在这个代码someAjaxFunction("some url", thisIsACallBack);
的情况下,它触发了someAjaxFunction
,然后是thisIsACallBack
函数,因为你把someAjaxFunction
的名称写为字符串
更新
如果你必须将参数传递给你的回调,你的选择是
someAjaxFunction("some url", function(param1){
thisIsACallBack(param1)
); } );
...
success: function(html){
...
callback( yourArray );
}
JavaScript有很多方法可以根据您的需要传递回调
相关文章:
- 成功回调永远不会被JSONP请求调用
- 查询后websql成功回调无法访问变量
- 在$q服务中捕获拒绝而不触发成功回调
- 如何从ajax成功回调函数中读取javascript变量
- AJAX成功回调-执行javascript时出现问题
- 当使用命名函数作为jquery ajax成功回调时,我需要括号吗
- jQuery$.post可以在chrome、safari中工作,但不能在FF中工作(声明成功回调函数未定义)
- Yii ajaxbutton : 如何在成功回调函数中获取 $(this)
- 角承诺的“then”函数的成功回调的词汇范围是什么?
- 承诺中的成功回调不会发生$http
- Ajax成功回调仅适用于Chrome
- 将类方法绑定到类外绑定的事件处理程序内的AJAX成功回调
- 成功回调中的外部变量未正确更新
- 为什么jQuery成功回调有时有3个参数,有时只有1个
- 当通过Ajax成功回调更新可观察数组时,启用绑定中断
- 构建Ajax调用数组时,JQueryAjax成功回调不起作用
- JQuery AJAX没有't获得成功回调功能
- 如何访问作为参数发送到jquerypost的成功回调中的数据值
- 成功回调不是一个函数
- AngularJS$http.获取当时和成功回调之间的区别