#ajax #mootools
#ajax #mootools
Вопрос:
Я пытался создать этот класс mootools (версия 1.2.4) для обработки моих ajax-запросов. Но мои скрипты возвращают только readystate 1. никогда не доходит до 2,3 или 4, метод handleHttpResponse, похоже, запускается только один раз. Я выставил оповещения для просмотра, но получаю только 1. есть идеи?
var replyXML = new Class ({
/* GDW AJAX REQUEST SCRIPT */
/* By: Jonathan Robidas 2011-05-13 */
initialize : function(url){
this.http = this.getHTTPObject(); // We create the HTTP Object
this.url = url; // Requested server-side script
this.response = ''; // String returned by AJAX, Set after positive response
},
returnResponse : function() {
return this.response;
},
handleHttpResponse : function() {
alert(this.http.readyState);
if (this.http.readyState == 4) {
if(this.http.status==200) {
alert("YA YA 2");
this.response = this.http.responseText;
return true;
}
}
},
requestXML : function() {
this.http.open("GET", this.url, true);
//this.http.onreadystateshange = this.handleHttpResponse();
this.http.onload = this.handleHttpResponse();
},
getHTTPObject : function() {
var xmlhttp;
if(window.XMLHttpRequest){
xmlhttp = new XMLHttpRequest();
}
else if (window.ActiveXObject){
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
if (!xmlhttp){
xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
}
}
return xmlhttp;
}
});
Вот как я его запускаю на данный момент. мое содержимое равно нулю, но мой URL-адрес является рабочим XML-файлом. значит, он не должен быть пустым … ?
<script language="Javascript" type="text/Javascript">
window.addEvent('domready', function() {
loadXML = new replyXML('gdwcommreply_genxml.php?getfield=idvideoamp;fieldid=64amp;parentid=59');
loadXML.requestXML();
content = loadXML.returnResponse();
alert(content);
/*
x=content.documentElement.childNodes;
for (i=0;i<x.length;i ) {
document.write(x[i].nodeName);
document.write(": ");
document.write(x[i].childNodes[0].nodeValue);
document.write("<br />");
}
*/
});
</script>
Протестировано в Google Chrome, Firefox 4, Internet Explorer 7 и 8, результат тот же.
Вот пример XML, который предполагается выводить скриптом: http://jerenovici.net/gdwcommreply_genxml.php?getfield=idvideoamp;fieldid=64amp;parentid=59 итак, я знаю, что мой php, генерирующий xml, в порядке.
Спасибо!!
Ответ №1:
Зачем вы изобретаете велосипед? Если вы используете mootools, создать ajax-запрос чрезвычайно просто (docs, ссылающийся на новейшую версию, но в данном случае запрос не изменился):
new Request({
url : './gdwcommreply_genxml.php?getfield=idvideoamp;fieldid=64amp;parentid=59',
onSuccess : function(responseText, responseXML){
/* here, do stuff with your response */
},
onFailure : function(xhr){
/* the XMLHttpRequest instance. */
}
}).send();
Тогда вы уверены, что URL правильный?
Комментарии:
1. я согласен. 1 за прагматичность.
2. Спасибо, я использую этот класс, сработало с первой попытки, спасибо за помощь!