javascript, php, ajax - AJAX-ответ всегда пуст - PullRequest
0 голосов
/ 17 июня 2011

Добрый день всем.У меня текущая проблема.

У меня есть 2 домена.На одном домене я отправляю сообщение ajax другому и ожидаю результатов.Проблема в том, что ответ всегда пуст.Если я проверяю вкладку net, запрос выглядит нормально (с данными поста все в порядке), он не получает никакой ошибки, он заканчивается (я помещаю предупреждение в функцию ответа дескриптора, чтобы проверить, каков ответ).Я попытался отправить запрос на случайные домены (например, example.com), чтобы узнать, получу ли я что-нибудь.Ответ тот же ... нет.

Вот скрипт, который я использую:

    function sendReqPost(url) {
      http_request = false;
      if (window.XMLHttpRequest) { // Mozilla, Safari,...
         http_request = new XMLHttpRequest();
         if (http_request.overrideMimeType) {
            // set type accordingly to anticipated content type
            //http_request.overrideMimeType('text/xml');
            http_request.overrideMimeType('text/html');
         }
      } else if (window.ActiveXObject) { // IE
         try {
            http_request = new ActiveXObject("Msxml2.XMLHTTP");
         } catch (e) {
            try {
               http_request = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {}
         }
      }
      if (!http_request) {
         alert('Cannot create XMLHTTP instance');
         return false;
      }
      //http_request.onreadystatechange = handleResponseAccept;
      http_request.open('POST', url, true);
      http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
      http_request.setRequestHeader("Content-length", parameters.length);
      http_request.setRequestHeader("Connection", "close"); 
      //parameters is a global variable with the post data.     
      http_request.send(parameters);
    }

Я дважды проверил все в скрипте ... Я также вставил echos в запрошенную страницу php, чтобы увидеть, получаю ли я что-нибудь.Что бы я ни делал, ответ пустой.PS На другом домене скрипт ajax работал нормально.Точно так же.

Ответы [ 2 ]

4 голосов
/ 17 июня 2011

У меня есть 2 домена. На одном домене я отправляю сообщение ajax другому и ожидаю результатов.

Вот твоя проблема. Это из-за Одинаковой политики происхождения в JavaScript. И вот почему ...

... на другом домене скрипт ajax работал нормально.

Однако есть некоторые обходные пути, называемые Cross Domain Ajax .

Для ваших нужд, поскольку вы, очевидно, хотите HTML, а не JSON, я бы предложил небольшой PHP-скрипт, чтобы получить контент из другого домена и переслать его на вашу клиентскую сторону. Это будет называться Ajax-прокси .

См. этот вопрос

0 голосов
/ 17 июня 2011

Я не вижу ваш http_request.responseText, он возвращает то, что echo 'указано в URL-адресе запроса.

Так что попробуйте добавить это:

http_request.onreadystatechange = function () {
    if (http_request.readyState == 4) {
        if (http_request.status == 200) {
            alert(http_request.responseText);
        } else {
            alert("An error occurred: "+ http_request.statusText);
        }
     }
};

До:

//parameters is a global variable with the post data. 

Посмотрите, работает ли оно.

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