Prototype - AJAX Request() 方法

此 AJAX 方法启动并处理 AJAX 请求。此对象是通用 AJAX 请求器:它处理请求的生命周期、处理样板并允许您插入回调函数以满足您的自定义需求。

在可选选项哈希中,您可以根据自定义需求使用任何回调函数,如 onComplete 和/或 onSuccess。

语法

new Ajax.Request(url[, options]);

对象创建后,它会立即启动请求,然后在其整个生命周期中继续处理请求。定义的生命周期如下 −

  • 已创建
  • 已初始化
  • 已发送请求
  • 正在接收响应(随着数据包的进入,可能会发生多次)
  • 已接收响应,请求完成

Ajax Options 中定义了一组回调函数,它们按以下顺序触发 −

  • onCreate(这实际上是为 AJAX 全局响应器保留的回调))
  • onUninitialized(映射到已创建)
  • onLoading (初始化时映射)
  • onLoaded(发送请求时映射)
  • onInteractive(收到响应时映射)
  • onXYZ(数字响应状态代码)、onSuccess 或 onFailure(见下文)
  • onComplete

可移植性

根据您的浏览器如何实现 XMLHttpRequest,可能永远不会调用一个或多个回调。特别是,到目前为止,onLoadedonInteractive 并不是 100% 安全的选择。但是,全局的 onCreateonUninitialized 和最后两个步骤非常有保证。

返回值

new Ajax.Request

禁用和启用 PeriodicalUpdater

只需调用其 stop 方法,即可停止正在运行的 PeriodicalUpdater。如果您希望稍后重新启用它,只需调用其 start 方法。两者都不带参数。

示例

<html>
   <head>
      <title>Prototype examples</title>
      <script type = "text/javascript" src = "/javascript/prototype.js"></script>
      
      <script>
         function SubmitRequest() {
            new Ajax.Request('/cgi-bin/ajax.cgi', {
               method: 'get',
               onSuccess: successFunc,
               onFailure:  failureFunc
            });
         }
         function successFunc(response) {
            if (200 == response.status) {
               alert("Call is success");
            }
            var container = $('notice');
            var content = response.responseText;
            container.update(content);
         }
         function failureFunc(response) {
            alert("Call is failed" );
         }
      </script>
   </head>

   <body>
      <p>Click submit button see how current notice changes.</p>
      <br />
 
      <div id = "notice">Current Notice</div>
      <br />
      <br />
      <input type = "button" value = "Submit" onclick = "SubmitRequest();"/>
   </body>
</html>

以下是 ajax.cgi 的内容。

#!/usr/bin/perl

print "Content-type: text/html

";
print "This content is returned by AJAX cgi <br />";
print "Current Time " . localtime;

输出

参数和 HTTP 方法

您可以将请求的参数作为选项中的参数属性传递 −

new Ajax.Request('/some_url', {
   method: 'get',
   parameters: {company: 'example', limit: 12}
});

prototype_ajax_tutorial.html