2012-03-17 2 views
0

Я пытаюсь отправить некоторую информацию в файл php и отобразить возвращенный результат. Прежде всего, я не получаю никаких результатов от php-файла, то есть нет значения в xmlhttp.responseText. Вместо responseText я попытался поставить 'something else', который не имел никакого значения. Но когда я прокомментирую //if (xmlhttp.readyState==4 && xmlhttp.status==200), результат кратко появится. Что я сделал не так?Почему у меня проблема связи ajax?

Ajax код выглядит следующим образом:

var div = 'display'; 
var xmlhttp; 
if (window.XMLHttpRequest) 
{ 
    xmlhttp=new XMLHttpRequest(); 
} 
else 
{ 
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
} 

xmlhttp.onreadystatechange=function() 
{ 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) 
    { 
     writeBack (div, xmlhttp.responseText+'something else', 'red'); 
    } 
} 

xmlhttp.open("POST","update_profile2.php",true); 
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded"); 
xmlhttp.send("rr="+id); 

Php код:

.. 
if(isset($_POST['rr'])) 
{ 
die('connection made'); 
} 
.. 
+4

Каждая проблема, с которой я когда-либо сталкивался с AJAX, обычно вызвана попыткой отправить запрос AJAX с помощью кнопки «отправить» в форме. Если вы это делаете, убедитесь, что вы остановили .submit() .... Кроме того, если вы используете jQuery, ваш код AJAX будет выглядеть намного лучше :) – donutdan4114

+0

Святое дерьмо, я просто потратил весь день из-за этого? Спасибо @ donutdan4114, это сработало. –

+0

Я представил свой комментарий как ответ за правильную «зеленую галочку». – donutdan4114

ответ

1

Каждая проблема, которую я когда-либо имел с AJAX обычно вызывается пытается отправить запрос на AJAX, используя «отправить 'в форме. Если вы это делаете, убедитесь, что вы остановили .submit() .... Кроме того, если вы используете jQuery, ваш код AJAX будет выглядеть так хорошо :)

0

Как и другие пользователи говорят, что с jquery код выглядит много лучше.

Однако я совершенно уверен, что ваша проблема с этой линии:

xmlhttp.open("POST","update_profile2.php",true); 

Запрос выше доступ непосредственно к update_profile2.php и получает обратно все содержимое страницы PHP, не выход, разработанный на странице , Это способ доступа к странице без запроса веб-сервера (с помощью php engine) для его обслуживания. И, конечно, http-вызов завершается с ошибкой, поэтому условие & & xmlhttp.status == 200 блокирует выполнение следующей инструкции, которая заполняет div.

использовать вместо:

xmlhttp.open("POST","http://localhost/update_profile2.php",true); 

Это будет отправить запрос AJAX HTTP для Apache, иль будет запустить страницу PHP и возвращает ответ страницы!

+0

«Вышеприведенный запрос позволяет получить доступ непосредственно к файлу update_profile2.php и вернуть все содержимое php-страницы», - нет, это не так. это HTTP-запрос. –

+0

Уверен, что это HTTP-запрос. но запрос не отправляется на веб-сервер Apache. На самом деле я тестировал его на своей машине: whit только «update_profile2.php», результат был «« Так что содержание страницы не было разработано. С http: //localhost/update_profile2.php результатом был «hello world». Таким образом, PHP-страница была правильно выполнена с помощью php-движка. –

+0

Это потому, что вы просматриваете страницу с файлом: // protocol. –