【问题标题】:JQUERY onclick pass a callback after ajax methodJQUERY onclick在ajax方法之后传递一个回调
【发布时间】:2012-09-18 17:23:36
【问题描述】:

我有这个 <a onclick="$('.element').hide(0); doMyMethod(_element = $(this));"></a>

doMyMethod() 是一个 ajax 请求,我想在这个方法完成时传递一个回调我想alert('somenthing');

所以我没有机会尝试: <a onclick="$('.element').hide(0,function(){doMyMethod(_element = $(this)); }, function(){ alert('somenthing');}); "></a>

有人可以帮我吗?

【问题讨论】:

  • 为什么不能使用标准的回调机制?如果您需要装饰或包装另一个回调,这在 JavaScript 中相当容易。

标签: javascript jquery methods callback


【解决方案1】:

你需要将你的 alert('something') 方法传递给 doMyMethod,它应该将它作为回调传递给 jquery 的 ajax。

由于您的点击变得复杂,您可以将其移至它自己的功能。

function myClickHandler(item) {
  $('.element').hide(0);
  var callback = function() { alert('something'); };
  doMyMethod(_element = $(item), callback);
}

<a onlick="myClickHandler(this)"></a>

将回调作为“完成”回调http://api.jquery.com/jQuery.ajax/

【讨论】:

    【解决方案2】:

    你可以把它放在ajax请求成功中。

    function doMyMethod() {
    $.ajax({
        url: '...',
        data: '...',
        type: '...',
        //...
        success: function(data) {
            alert('something')
        }
        //...
    });
    }
    

    【讨论】:

    • 不,抱歉,我需要在没有任何回调语句的情况下完成 ajax 请求
    • 你可以玩 $.ajaxStart() 和 $.ajaxStop() 吗?等待 ajax 请求完成并执行您的代码。你能把你的ajax放在一个全局变量中吗? var 方法 = $.ajax(...);
    猜你喜欢
    • 2014-06-07
    • 1970-01-01
    • 2014-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-07
    • 1970-01-01
    相关资源
    最近更新 更多