【问题标题】:how to pass a function as part of an object in javascript without invoking the function如何在不调用函数的情况下在javascript中将函数作为对象的一部分传递
【发布时间】:2011-12-13 07:51:03
【问题描述】:

我正在尝试使用 .ajaxSubmit()。我想将选项对象传递给它。我想根据用户的行为创建这个选项对象。所以这就是我的做法:

$('#my-form').ajaxSubmit(GetSearchAjaxFormOptions(param1, param2));

function GetSearchAjaxFormOptions(param1, param2) {
    return { target: '#results',
        data: GetData(),
        success: RunAfterAjaxSubmit(param1, param2)
    };
}

function RunAfterAjaxSubmit(param1, param2) {
    //    do stuff
}

一切正常,除了 RunAfterAjaxSubmit 不仅在 ajax 调用返回之后被调用,而且在 ajax 调用之前在以下行进行:

成功:RunAfterAjaxSubmit(param1, param2)

如何更改我的代码,使其仅在返回 ajax 调用后调用。

非常感谢!

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    这听起来像是一个关闭的工作。 ajax 成功属性需要一个回调函数,它将尝试将返回的数据作为第一个参数泵入。如果您仍想使用您的 param1 和 param2,请执行以下操作

    $('#my-form').ajaxSubmit(GetSearchAjaxFormOptions(param1, param2));
    
    function GetSearchAjaxFormOptions(param1, param2) {
        return { target: '#results',
            data: GetData(),
            success: RunAfterAjaxSubmit(param1, param2)
        };
    }
    
    function RunAfterAjaxSubmit(param1, param2) {
        return function(ajaxData){
             //do stuff with param1 and param2 here as well as the ajaxData it returns if any
        }
    }
    

    【讨论】:

    • 谢谢,我试过了。它没有用。函数(ajaxData)中的代码永远不会到达。到达 RunAfterAjaxSubmit 时。
    • 您确定您的 ajax 正在返回成功返回码吗?
    • 非常确定。我的代码可以正常工作。 ajax 结果通过并显示出来。我只是在提交之前和提交之后调用一次 RunAfterAjaxSubmit。我需要先得到一次。
    • 看了stackoverflow.com/questions/1969476/… 把我的提交改成:success: function () { RunAfterAjaxSubmit(param1, param2)} 看来这个表单解决了问题。明天将进行更多测试并更新。
    【解决方案2】:

    将成功线改为:

    success: function () { RunAfterAjaxSubmit(param1, param2)}
    

    解决问题

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-10
      • 1970-01-01
      • 1970-01-01
      • 2021-09-14
      • 1970-01-01
      • 1970-01-01
      • 2014-01-31
      • 2019-05-21
      相关资源
      最近更新 更多