我正在学习使用Ajax和JavaScript的教程,这就是我们正在制作的代码:
$('document').ready(function(){
$.ajax({
url: "AwesomeText.html",
type: "GET",
datatype: "Html"
})
.done(Success)
});
function Success(result){
$("p").append(result);
}
我知道它是如何运作的,但有一件事让我很困惑。我们创建了一个Success函数来将请求的HTML文件追加到页面中的段落,然后我们传递了一个名为result的参数,所以根据我的理解,我可以将参数命名为any并将其作为参数传递,它将起作用。我取得了成功,并以x作为参数传递,它仍然有效..
所以我的问题是JQuery如何知道它应该将请求的HTML文档存储在我们在此函数中创建的参数中?如果我有其他函数,Jquery会将所请求的文件存储到它的参数中的每个函数中吗?我不知道JQuery如何知道。
此外,还有一个.done函数,它的功能与此处说明的相同: https://api.jquery.com/deferred.done/ 为什么叫做延期?
答案 0 :(得分:3)
默认.done()回调将传递3个参数,因此根据您的需要,您可以使用自己的名称在成功函数中使用它们中的任何一个。 传递的三个参数是data,textStatus,jqXHR
所以你的成功函数的第一个参数是ajax调用的响应,即从服务器收到的数据, 第二个参数是状态,第三个参数是jqueryXmlHttpRequest对象。
根据您的需要,您可以按相同的顺序访问这些对象
答案 1 :(得分:1)
url
传递给ajax时,它基本上会抓取该网址并返回您在该url
,AwesomeText.html
处获得的内容
然后它将该URL的内容作为第一个参数发送到success
函数success =类型:函数(任何数据,字符串textStatus,jqXHR jqXHR )
.done(fn)
方法在调用.done的方法之后调用某个方法[可以说Promise
]进行同步调用您可以查看以下问题以了解promises和.done()方法
答案 2 :(得分:0)
.done方法接受"成功"作为输入。
Success: Function( Anything data, String textStatus, jqXHR jqXHR )
请求成功时要调用的函数。功能得到 传递了三个参数:从服务器返回的数据,格式化 根据dataType参数或dataFilter回调 功能,如果指定;描述状态的字符串;和jqXHR (在jQuery 1.4.x,XMLHttpRequest中)对象。截至jQuery 1.5, 成功设置可以接受一系列功能。每个功能都会 被轮流打电话。
所以,第一个参数(称之为数据/结果/ x /等)将包含服务器的回复。