我有以下代码:
$.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 || {};
答案 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,但它会解析它并将结果传递给您的函数。)