2012-06-21 5 views
0

Я новичок в методах AJAX. Я хочу, чтобы опубликовать некоторые Infos, что процессы на странице PHP, вызовите его page.phpСообщение Ajax, отображающее неадекватное сообщение

В моей HTML страницы, я поместил этот код:

<script type="text/javascript" charset="utf-8"> 
//I have put the function getXMLHttpRequest() on a separate js file 
function getXMLHttpRequest() { 
    var xhr = null; 

    if (window.XMLHttpRequest || window.ActiveXObject) { 
     if (window.ActiveXObject) { 
      try { 
       xhr = new ActiveXObject("Msxml2.XMLHTTP"); 
      } catch(e) { 
       xhr = new ActiveXObject("Microsoft.XMLHTTP"); 
      } 
     } else { 
      xhr = new XMLHttpRequest(); 
     } 
    } else { 
     alert("Votre navigateur ne supporte pas l'objet XMLHTTPRequest..."); 
     return null; 
    } 

    return xhr; 
} 

function request(callback) { 
    var xhr = getXMLHttpRequest(); 

    xhr.onreadystatechange = function() { 
     if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) { 
      callback(xhr.responseText); 
     } 
    }; 

    xhr.open("POST", "page.php", true); 
    xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
    xhr.send("name=proposition"); 
} 

function postData(Data) { 

    alert(Data); 

} 
</script> 

<button onclick="request(postData);">...</button> 

В page.php, у меня есть метод

protected function comment(){ 
//some code processing the posted infos (that works fine)... 

//to debug, I have put a 
echo('Hello world'); 

} 

Дело в том, что я не получаю никакого «Hello world», а огромное сообщение предупреждения со всем отображаемым кодом моей веб-страницы.

У кого-нибудь есть идея?

Бест, Newben

+0

Рассмотрим с помощью JQuery для AJAX, это меньше кода и гораздо проще;) – edwardmp

+0

серьезно я не хочу никого обижать, но я видел этот код с XMLHttpRequests, как миллион раз, я не ожидаю, что каждый будет использовать jquery, но я ожидаю исследования библиотеки, которая упростит их. – Gntem

ответ

0

Вы определяете функцию в page.php, но никогда не называя его. И удалить защищенный ключевое слово, потому что это не имеет смысла (вы не делаете класс)

Попробуйте

function comment(){ 
//some code processing the posted infos (that works fine)... 

//to debug, I have put a 
echo('Hello world'); 

} 

comment(); 
+0

На самом деле, чтобы быть яснее: структура page.php - page.php? Page = 'mypage' & post = 'post'.So сначала есть направление для mypage.php, а затем в mypage.php есть инстанцирование класса. Метод __construct принимает переменную post для вызова метода внутри класса, который называется comment(). Означает ли это вас? – Newben

+0

, пожалуйста, разместите содержимое mypage.php. Кажется, это нелогичный способ сделать это. Я бы использовал весь код в одном файле. – edwardmp

+0

кажется, что вы php-файл интерпретируется как обычный текст, поэтому он отображается в предупреждении. Вы забыли добавить начальный тег PHP на php-страницах ( edwardmp