【问题标题】:Conditionally adding option to jQuery Ajax call有条件地向 jQuery Ajax 调用添加选项
【发布时间】:2011-09-02 18:51:38
【问题描述】:

我有以下有效的 Ajax 调用 -

    $.ajax({
        url: ajaxUrl,
        type: sendHttpVerb,
        dataType: 'json',
        processData: false,
        contentType: 'application/json; charset=utf-8',
        complete: function () {
            setTimeout($.unblockUI, 2000);
        },
        success: function (response, status, xml) {
            clearTimeout(delayLoadingMsg);
            $.unblockUI();
            callbackFunction(response);
        },
        error: function (jqXHR, textStatus, errorThrown) {
            clearTimeout(delayLoadingMsg);
            $.unblockUI();
            dcfForm.ajaxErrorDisplay(jqXHR, textStatus, errorThrown)
        }
    });

我的问题是我有条件地想在调用 Ajax 调用时添加一个选项。例如,在我发出 Ajax 请求之前添加data: sendRequest

我的问题是,如果不完全复制整个函数,我找不到有关如何执行此操作的语法示例。

【问题讨论】:

  • 在你说“不”复制整个函数之前,我有一个答案。那将是我的解决方案,但是我同意有条件地添加该选项会更干净。我很抱歉这是我个人知道如何做到这一点的唯一方法。
  • 但是...对于您的示例,如果您想有选择地发送参数,那么您总是发送参数但在发出请求之前将值设置为 "" 与条件如何。

标签: javascript jquery ajax jquery-plugins


【解决方案1】:

三元运算呢:

$.ajax({
     data: condition ? sendRequest : undefined,
     ... the rest
});

如果那不是你的口味,有些人似乎忘记了 $.ajax 不需要一长串参数,而是一个对象:

var ajax = {};
ajax.success = function (data) { ... };
ajax.type = 'GET';

if (myCondition) {
    ajax.data = sendRequest;
}

$.ajax(ajax);

【讨论】:

    猜你喜欢
    • 2019-03-10
    • 1970-01-01
    • 2020-06-03
    • 2014-04-10
    • 2016-10-01
    • 1970-01-01
    • 2021-11-16
    • 1970-01-01
    相关资源
    最近更新 更多