我使用AJAX调用页面,请求搜索某些内容。但响应文本始终为空,尽管就绪状态为4。
function process() {
var requestPage = "http://some.page/search.php";
var xmlHTTP;
var searchString = "test";
if (window.XMLHttpRequest) {
xmlHTTP = new XMLHttpRequest();
} else {
xmlHTTP = new ActiveXObject("Microsoft.XMLHTTP");
}
var results;
xmlHTTP.open("GET", requestPage + "?search=" + searchString, true);
xmlHTTP.send();
xmlHTTP.onreadystatechange = function() {
results = xmlHTTP.responseText;
alert("r: " + results + " rs: " + xmlHTTP.readyState + " st: " + xmlHTTP.status);
}
}
我从中得到的结果是
r: rs: 2 st: 0
r: rs: 4 st: 0
因此,请求成功完成,但HTTP状态不是200. 但是:我使用WireShark跟踪请求,请求的结果包显示为状态200,甚至包含完整的请求结果,见下文:
7014 190.663287 some.page local.pc HTTP HTTP/1.1 200 OK (text/html)
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Set-Cookie: JSESSIONID=xxx; Path=/xxx
Content-Type: text/html;charset=iso-8859-1
Content-Length: 3108
Date: Tue, 19 Apr 2011 13:05:41 GMT
<html>
<head>
<title>Search</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body bgcolor="white">
...
因此;为什么当我的AJAX请求显然成功时,我不能获得状态200?
答案 0 :(得分:0)
所以你的问题是你要求一个页面有不同的端口
相同的原始政策表示协议端口和主机应该是相同的
见
http://en.wikipedia.org/wiki/Same_origin_policy和https://developer.mozilla.org/en/Same_origin_policy_for_JavaScript