可以原型或JQuery的上一个AJAX请求返回的HTTP状态代码(Can Prototype or

2019-06-26 03:50发布

url = "http://example.com"
new Ajax.Request(url, {
  onComplete: function(transport) {
    alert(transport.status);
  }
});

我想,要返回200状态,如果该网站是否正常工作,或500,如果它不能正常工作,等等。但是,代码返回0,所有的时间。

最后,我想有一个setInterval函数,定期坪正常运行时间状态的网站。

Answer 1:

使用jQuery你应该得到类似于你有什么代码的状态,这将是这样的:

$.ajax({
  url: 'some.url.com',
  type: 'POST',
  complete: function(transport) {
     if(transport.status == 200) {
         alert('Success');
     } else {
         alert('Failed');
     }
  }
 });

如果你想使用原型代码应该只补充一点:

      onXYZ:function(transport){
      }

在上述XYZ文本应当由HTTP状态代码来替换你想赶上响应。

希望这可以帮助



Answer 2:

Ajax库不“返回状态代码”自己; 该代码是在来自服务器的响应中返回的HTTP响应代码。 的状态代码200表示成功; 404表示“未找到”等

这是可能的0响应代码意味着没有甚至企图请求。 是同一个域下的请求URL(子域名,如适用),因为这其中的页面是从哪里来的? 如果没有,那么你可能会运行与同源策略,以防止脚本从创建任意要求的问题。

要解决这个问题,你需要代理服务器端的数据; 例如使用脚本/框架处理程序/无论其执行Web请求,并将该数据回落到客户端。 调用“本地”的代理,而不是远程数据源。



Answer 3:

原型onXYZ回调 ,例如:

new Ajax.Request(url, {
  method: 'get',
  on500: function(transport) {
    alert("failed!");
  },
  onSuccess: function(transport) { 
    alert("success!");
  }
});

在事不过,如果该网站已关闭(如,不可达),它不会返回一个500错误,那么你的做法是不是对于初学者非常好。



Answer 4:

我能够通过创建一个服务器端的代理文件通过传递状态代码,以使远程域的工作。 我用了这个帖子上的代码来创建一个asp.net页面,将刚刚页面的状态代码设置为Web请求状态代码。

然后我用Chermosillo设置像这样的AJAX例子。

$.ajax({
  url: 'URLTestProxy.aspx?url=http://some.url.com',
  type: 'POST',
  complete: function(transport) {
     if(transport.status == 200) {
         alert('Success');
     } else {
         alert('Failed');
     }
  }
 });

这样,在这里你可以绕过同源策略,仍然可以得到远程URL的状态代码。



Answer 5:

这可能是让你知道,在这个例子中的传输参数是一个XMLHttpRequest的对象。 可用从此对象的方法和属性的全部细节可以在这里找到:

http://www.w3.org/TR/XMLHttpRequest/#the-xmlhttprequest-interface

在这个问题的背景下最主要的是响应项目:

  readonly attribute unsigned short status;
  readonly attribute DOMString statusText;
  DOMString getResponseHeader(DOMString header);
  DOMString getAllResponseHeaders();
  readonly attribute DOMString responseText;
  readonly attribute Document responseXML;


Answer 6:

你应该能够得到任意的文件头和getResponseHeader()方法。

jQuery的你可以尝试:

complete: function(transport, textstatus){ 
    alert(transport.getResponseHeader("Status"))
}

警告:未测试



文章来源: Can Prototype or JQuery return an HTTP status code on an AJAX request