AJAX Ready State 4, но пустой текст - PullRequest
0 голосов
/ 19 апреля 2011

Я вызываю страницу, используя 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">
...

Итак;почему я не получаю статус 200 в моем запросе AJAX, когда он явно выполняется?

1 Ответ

0 голосов
/ 19 апреля 2011

Итак, ваша проблема в том, что вы запрашиваете страницу с другим портом.
В той же политике происхождения указано, что протокол, порт и хост должны совпадать.
См.
http://en.wikipedia.org/wiki/Same_origin_policy и https://developer.mozilla.org/en/Same_origin_policy_for_JavaScript

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...