successCallback如何真正起作用?

时间:2014-04-26 15:48:07

标签: jquery ajax callback

我对回调感到困惑,因为我根本不理解它。我正在使用的API具有类似的ajax函数:

"ajax": function ( method, url, data, successCallback, errorCallback ) {
$.ajax( {
        "type": method,
        "url":  url,
        "data": data,
        "dataType": "json",
        "success": function (json) {
            successCallback( json );
        },
        "error": function (xhr, error, thrown) {
            errorCallback( xhr, error, thrown );
        }
    } );

来自API doc:


方法 - 字符串
用于AJAX请求的HTTP方法

url - string
将数据提交到

的URL

数据 - 对象
提交给服务器的数据

successCallback - 功能
数据检索成功的回调函数

errorCallback - 功能
关于数据检索错误的回调函数


我不明白的是当我删除successCallback时,事件没有完成。为什么会这样?我已经点击了“success”参数,因为我已经犹豫地运行了ajax请求,那么这里的回调是做什么的呢?我认为“成功”中的任何内容基本上都是在“ajax请求完成后做这些事情”。

由于

2 个答案:

答案 0 :(得分:1)

我不确定您指的是什么API,但successCallback只是一个功能。这意味着它可以做任何事情。回调是一个可执行的代码块,您可以将其作为参数传递。

api.ajax(method, url, data, function (json) {
    console.log(json);
}, function (err) {
    console.err(err);
});

在ajax请求成功后触发function方法时,将调用success。 API为您提供了一种传递自己的自定义代码的方法,该代码在ajax完成时调用。

答案 1 :(得分:0)

在API文档中,successCallback引用设置为success属性的函数。 success处理程序是可选的,如果省略,则ajax仍将执行并完成。

您似乎认为必须在成功处理程序中调用名为successFunction的内容。不是这种情况。你可以把任何你想要的东西放在成功处理程序中,或者什么也不做,或者只是省略它。

为了说明,以下所有内容都是$.ajax的有效用法:

$.ajax({
     "type": method,
     "url": url,
     "success": function (json) {

      }
});

$.ajax({
     "type": method,
     "url": url,
     "success": function (json) {
          someFunction(); // providing this exists obviously
      }
});

$.ajax({
     "type": method,
     "url": url
});