javascript - 将函数引用传递给单独的 Javascript 文件以进行回调

标签 javascript ajax

我已经为我所有的 ajax 调用创建了一个通用的 Javascript 文件。我试图将其用作跟踪所有 ajax 调用的常用方法。下面是相同的代码。

function doAjax(doAjax_params) {
    var url = doAjax_params['url'];
    var requestType = doAjax_params['requestType'];
    var contentType = doAjax_params['contentType'];
    var dataType = doAjax_params['dataType'];
    var data = doAjax_params['data'];
    var beforeSendCallbackFunction = doAjax_params['beforeSendCallbackFunction'];
    var successCallbackFunction = doAjax_params['successCallbackFunction'];
    var completeCallbackFunction = doAjax_params['completeCallbackFunction'];
    var errorCallBackFunction = doAjax_params['errorCallBackFunction'];

       //Make the ajax call
    $.ajax({
        url: getBaseURL() + url,
        crossDomain: true,
        type: requestType,
        contentType: contentType,
        dataType: dataType,
        data: data,
        success: function (data, textStatus, jqXHR) {
            console.log(typeof successCallbackFunction);
            debugger
            //if (typeof successCallbackFunction === "function") {
                successCallbackFunction(data);
            //}
        },
        error: function (jqXHR, textStatus, errorThrown) {
            if (typeof errorCallBackFunction === "function") {
                errorCallBackFunction(errorThrown);
            }

        }
    });
    }

此代码采用参数列表并根据参数创建 ajax 请求。此代码保存在文件 APIHandler.js 中。

我正在尝试从多个文件中调用此函数。下面是一个调用示例。

function RedirectToDashboard() {
    var params = $.extend({}, doAjax_params_default);
    params['url'] = `profile/5`;
    params['successCallbackFunction'] = `testsuccess`
    doAjax(params);

}

function testsuccess() {
    alert("success");
}

当我运行这个函数时,我能够成功地进行调用。唯一的问题来自对回调函数的引用。 console.log(typeof successCallbackFunction); 返回字符串而不是函数。

我想也许 JS 的顺序有所不同。我正在加载 APIHandler.js,然后加载页面特定的 js。这个 ajax 调用发生在按钮单击时,因此两个 JS 文件都在进行 ajax 调用之前加载。

除此之外,我想也许我发送的参数有误。这可能导致 JS 将函数名称视为字符串。但我检查了大部分关于如何传递函数的谷歌建议,似乎只需要名称。

还有什么我可能在这里遗漏的吗?

最佳答案

该死的。我刚刚弄清楚为什么会导致错误。我在分配回调函数时使用了引号。发布问题后,我立即意识到出了什么问题。

params['successCallbackFunction'] = 'testsuccess'

应该改为

params['successCallbackFunction'] = testsuccess

关于javascript - 将函数引用传递给单独的 Javascript 文件以进行回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54176453/

相关文章:

javascript - ANTD 动态表单 - 初始值

javascript - 通过javascript附加多种样式的样式标签是不好的做法吗?

javascript - 第二个 JQuery POST 未定义值

javascript - 如何使用 Tag-it 通过 Ajax 加载预添加元素时不触发 afterTagAdded

Javascript 检测一个 div 是否包含在另一个 div 中以及何时不再包含

javascript - 在 NetBeans 中运行 AJAX PHP 示例

php - $ajax->link() 在 Firefox 中不起作用?

asp.net - 此请求已被阻止,因为敏感信息可能会泄露给第三方网站

javascript - 将 ruby​​ 代码与 js.coffee 脚本混合

javascript - 如何创建带有 slider 的叠加层?