标准 AJAX 调用应该如何完成、成功和错误部分

How should be a standard AJAX call with complete, success and error section

我使用以下 AJAX 调用以便在 MVC 中进行 CRUD 操作。但是,由于completesuccess、[=28=的error函数有很多不同的用法] 电话,我想澄清的是它们最常见或最合适的用法。在某些示例中,这些函数没有参数,但在其他示例中有多个参数(即 jqXHRtextStatuserrorThrown)。当然,我对每种情况都使用了必要的操作,即显示通知或确认消息等,但我只需要默认或标准使用它们中的每一个。您能否简要解释一下 post AJAX 用于 CRUD 操作的标准用法的最合适方法?

$.ajax({
    type: "POST",
    url: '@Url.Action("Insert", "Account")',
    cache: false,
    dataType: "json",
    data: formdata,
    complete: function () {
        //???
    },
    success: function (data, textStatus, XMLHttpRequest) {
        // ???
    },
    error: function (response) {
        // ???
    },

    //other example usages of error function :::
    error: function (jqXHR, textStatus, errorThrown) {
        console.log(errorThrown);
    },
    error: function (xhr) {
        console.log('Error: ' + xhr.statusText);
    }
}); 

您会看到不同的示例,因为:

  • 一些参数是可选的或混合类型
  • 其中一些,仅取决于作者决定在回调函数中命名参数的名称。
  • 这些回调及其参数的某些使用取决于作者当时使用的 jQuery 版本。

我建议您始终根据所用版本的文档来使用 .ajax。因此,如果您正在为您的应用程序寻找使用 .ajax 的标准方法,最好的办法是遵循文档语法:

http://api.jquery.com/jquery.ajax/

该文档非常善于描述 jQuery 的哪些版本发生了哪些变化,因此注意这一点可以避免您的应用程序出现问题。

来自 jQuery 文档:

完成

类型:函数(jqXHR jqXHR,字符串 textStatus)

请求完成时调用的函数(执行成功和错误回调后)。该函数传递了两个参数:jqXHR(在 jQuery 1.4.x、XMLHTTPRequest 中)对象和一个对请求状态进行分类的字符串("success"、"notmodified"、"nocontent"、"error"、"timeout"、"abort" 或 "parsererror")。从 jQuery 1.5 开始,完整的设置可以接受函数数组。每个函数将依次被调用。这是一个 Ajax 事件。

成功

类型:函数(任何数据、字符串 textStatus、jqXHR jqXHR)

请求成功时调用的函数。该函数传递三个参数: 从服务器返回的数据,根据 dataType 参数或 dataFilter 回调函数(如果指定)进行格式化;描述状态的字符串;和 jqXHR(在 jQuery 1.4.x,XMLHttpRequest 中)对象。从 jQuery 1.5 开始,成功设置可以接受函数数组。每个函数将依次被调用。这是一个 Ajax 事件。

错误

类型:函数(jqXHR jqXHR,字符串 textStatus,字符串 errorThrown)

请求失败时调用的函数。该函数接收三个参数:jqXHR(在 jQuery 1.4.x,XMLHttpRequest 中)对象,一个描述发生的错误类型的字符串和一个可选的异常对象(如果发生的话)。第二个参数(除 null 外)的可能值为 "timeout"、"error"、"abort" 和 "parsererror"。当发生 HTTP 错误时,errorThrown 接收 HTTP 状态的文本部分,例如 "Not Found" 或 "Internal Server Error." 从 jQuery 1.5 开始,错误设置可以接受函数数组。每个函数将依次被调用。注意:跨域脚本和跨域 JSONP 请求不会调用此处理程序。这是一个 Ajax 事件。