使JQuery ajax请求成为有条件的

Making a JQuery ajax request conditional

本文关键字:有条件 请求 JQuery ajax      更新时间:2023-09-26

如果不满足某些先决条件,我想跳过所有这段代码,但我也想在函数的括号之间移动所有代码。允许吗?我不明白这种语法是怎么工作的。

    $.ajax({
        type: "POST",
        url: urlAppend,
        data: JSON.stringify(xxx),
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        processdata: false,
        success: function (result) {
            if (canceled) {
                return;
            }
                //Long code
            }
        //Long code 2
        },
        error: function (request, error) {
            alert('ppp');
        }
    });

$.ajax调用放入函数中,然后将对该函数的调用封装在条件表达式中:

function makeRequest(){
  $.ajax( ... )
}
if ( some_condition ){
  makeRequest();
}

请记住,您在AJAX回调中使用了一些变量(即canceled变量)。您必须使该变量可用于函数。

function doComplexStuff(){
} 
$.ajax({
        type: "POST",
        url: urlAppend,
        data: JSON.stringify(xxx),
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        processdata: false,
        success: doComplexStuff,
        error: function (request, error) {
            alert('ppp');
        }
    });

doComplexStuff将自动接收成功函数接收到的所有参数。

看看这个例子:

function callAjax(condition) {
    if (condition) {
        $.ajax({
            type: "POST",
            url: urlAppend,
            data: JSON.stringify(xxx),
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            processdata: false,
            success: function (result) {
                if (canceled) {
                    return;
                }
                    //Long code
                }
            //Long code 2
            },
            error: function (request, error) {
                alert('ppp');
            }
        });
    }
}
// Somewhere in your code
callAjax(condition);

试试这个:

function runAjax(params){
    $.ajax({
        type: params["post"],
        url: params["url"],
        data: params["data"],
        contentType: params["content_type"],
        dataType: params["json"],
        processdata: params["process_bool"],
        success: function (result) {
            if (params["canceled"]) {
                return;
            }
                //Long code
            }
        //Long code 2
        },
        error: function (request, error) {
            alert('ppp');
        }
    });
}
if(condition){
  var options = {
      //set options here
  };
  runAjax(options);
}