使用json时,我的$ .ajax .done函数调用的函数参数是什么?

时间:2012-09-18 03:00:40

标签: javascript jquery

我有以下代码:

    $.ajax({
        url: href,
        dataType: 'json',
        type: 'POST',
        data: $form.serializeArray()
        })
        .done(onDone)
        .fail(onFail);

这是onDone函数:

var onDone = function (json, textStatus, XMLHttpRequest) {
    json = json || {};
    if (json.Success) {
        submitSuccessModal(json);
  • 有人可以告诉我这些是否是onDone的正确参数 功能。另外$ .ajax调用如何知道如何填充这些?

  • 此代码的作用是什么:json = json || {};

2 个答案:

答案 0 :(得分:0)

.done事件应具有处理响应的功能。

例如:

.done(function(return){
  //do something here where return is the result of the AJAX call
})

我所做的只是将功能放在完成,成功等方面......就像上面一样。

代码json = json || {};表示将变量设置为JSON返回或空对象。这是使用新关键字的首选。

这可能就像:

.done(function(json){
    json = json || {};
    If(json.Success){
      submitSuccessModal(json);
    }
})

答案 1 :(得分:0)

  

“有人可以告诉我这些是onDone函数的正确参数吗。$ .ajax调用如何知道如何填充这些?”

这些是正确的论点。但是$.ajax()不知道或不关心你在函数中声明了什么参数 - 无论你宣告什么你的函数将被称为有三个参数:“从服务器返回的数据,根据dataType参数格式化;描述状态的字符串;以及jqXHR(在jQuery 1.4.x,XMLHttpRequest)对象中。”实际的参数名称无关紧要,重要的是顺序。你可以忽略你不需要使用的那些;大多数时候你只需要第一个,实际的数据。

一般来说,无论声明了多少个参数,都可以使用任意数量的参数调用JavaScript函数,因此如果它是您正在使用的唯一参数,则可以声明第一个参数。或者您可以声明没有参数,仍然可以访问通过arguments object传递的内容。

  

“这段代码也在做什么: json = json || {};`”

||运算符返回第一个truthy操作数。在这种情况下,简写说如果json不是对象,则将其分配给空对象。在Ajax回调的上下文中,我认为你不需要这个测试,因为jQuery不应该调用你的.done()函数,除非响应被成功解析为有效的JSON。

(另请注意,json参数实际上不会接收JSON,它会收到一个对象。在封面下,jQuery接收JSON,但它会解析它并将结果传递给您的函数。)