url = "http://example.com"
new Ajax.Request(url, {
onComplete: function(transport) {
alert(transport.status);
}
});
我想,要返回200状态,如果该网站是否正常工作,或500,如果它不能正常工作,等等。但是,代码返回0,所有的时间。
最后,我想有一个setInterval函数,定期坪正常运行时间状态的网站。
url = "http://example.com"
new Ajax.Request(url, {
onComplete: function(transport) {
alert(transport.status);
}
});
我想,要返回200状态,如果该网站是否正常工作,或500,如果它不能正常工作,等等。但是,代码返回0,所有的时间。
最后,我想有一个setInterval函数,定期坪正常运行时间状态的网站。
使用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状态代码来替换你想赶上响应。
希望这可以帮助
Ajax库不“返回状态代码”自己; 该代码是在来自服务器的响应中返回的HTTP响应代码。 的状态代码200表示成功; 404表示“未找到”等
这是可能的0响应代码意味着没有甚至企图请求。 是同一个域下的请求URL(子域名,如适用),因为这其中的页面是从哪里来的? 如果没有,那么你可能会运行与同源策略,以防止脚本从创建任意要求的问题。
要解决这个问题,你需要代理服务器端的数据; 例如使用脚本/框架处理程序/无论其执行Web请求,并将该数据回落到客户端。 调用“本地”的代理,而不是远程数据源。
原型onXYZ回调 ,例如:
new Ajax.Request(url, {
method: 'get',
on500: function(transport) {
alert("failed!");
},
onSuccess: function(transport) {
alert("success!");
}
});
在事不过,如果该网站已关闭(如,不可达),它不会返回一个500错误,那么你的做法是不是对于初学者非常好。
我能够通过创建一个服务器端的代理文件通过传递状态代码,以使远程域的工作。 我用了这个帖子上的代码来创建一个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的状态代码。
这可能是让你知道,在这个例子中的传输参数是一个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;
你应该能够得到任意的文件头和getResponseHeader()方法。
jQuery的你可以尝试:
complete: function(transport, textstatus){
alert(transport.getResponseHeader("Status"))
}
警告:未测试