将参数传递给Ajax中的函数

时间:2015-11-29 10:02:12

标签: javascript jquery ajax

我正在学习使用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/ 为什么叫做延期?

3 个答案:

答案 0 :(得分:3)

默认.done()回调将传递3个参数,因此根据您的需要,您可以使用自己的名称在成功函数中使用它们中的任何一个。 传递的三个参数是data,textStatus,jqXHR

所以你的成功函数的第一个参数是ajax调用的响应,即从服务器收到的数据, 第二个参数是状态,第三个参数是jqueryXmlHttpRequest对象。

根据您的需要,您可以按相同的顺序访问这些对象

答案 1 :(得分:1)

  1. 当您将url传递给ajax时,它基本上会抓取该网址并返回您在该urlAwesomeText.html处获得的内容 然后它将该URL的内容作为第一个参数发送到success函数
  2. Documentation

      

    success =类型:函数(任何数据,字符串textStatus,jqXHR jqXHR   )

    1. 延迟.done(fn)方法在调用.done的方法之后调用某个方法[可以说Promise]进行同步调用
    2. 您可以查看以下问题以了解promises和.done()方法

      jQuery deferreds and promises - .then() vs .done()

答案 2 :(得分:0)

.done方法接受"成功"作为输入。

Success: Function( Anything data, String textStatus, jqXHR jqXHR )
  

请求成功时要调用的函数。功能得到   传递了三个参数:从服务器返回的数据,格式化   根据dataType参数或dataFilter回调   功能,如果指定;描述状态的字符串;和jqXHR   (在jQuery 1.4.x,XMLHttpRequest中)对象。截至jQuery 1.5,   成功设置可以接受一系列功能。每个功能都会   被轮流打电话。

所以,第一个参数(称之为数据/结果/ x /等)将包含服务器的回复。

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