AJAX вопрос от чайника
Вложений: 1
Привет! Изучаю чистый ajax, вот поставил перед собой задание, пишу проверку доменов, суть в чем в полу вводим домен(напрмер rambler.ru), а ниже этого поля в див ввыводиться результат(результат обрабатываеться файлом whois.php), пока идет запрос внизу должна показываться прелоадер, для реализации взял книгу и попытался написать но у меня не получилось про помочь , исходники вложил, если можно будет кратко что не так было....
|
Цитата:
С JavaScript-частью все плохо: if(!xnlHttp) alert("ERROR"); else return xmlHttp;Вы же этим самым выходите из функции createXmlHttrRequestObject, и в любом случае никакие functio process()написанные с ошибкой, ни function handleServerRespone()не будут доступны в глобальной области видимости, так как вы их внутри createXmlHttrRequestObject написали. |
вот я подправил:
// JavaScript Document var xmlHttp=createXmlHttpRequestObject(); function createXmlHttpRequestObject() { var xmlHttp; if(window.ActiveXObject) { try { xmlHttp=new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) { xmlHttp=false; } } else { try { xmlHttp=new XMLHttpRequest(); } catch(e) { xmlHttp=false; } } if(!xmlHttp) alert("ERROR"); else return xmlHttp; } function process() { if(xmlHttp.readyState==4 || xmlHttp.readyState==0) { url=encodeURIComponent(document.getElementById("url").value) xmlHttp.open("GET","whois.php?url=" + url, true); xmlHttp.onreadystatechange=handleServerRespone; xmlHttp.send(null); } else setTimeout('process()',1000); } function handleServerRespone() { url2=document.getElementById("url2"); while(xmlHttp.readyState!=4) { url2.innerHTML+="<img src="ajax-loader.gif" width="20" height="17">"; } if(xmlHttp.readyState==4) { try { respone=xmlHttp.responeText; url2.innerHTML+=respone; } catch(e) { alert("ERROR"); } } } Но всеравно не рабоатет |
Почитайте xmlhttprequest.ru, у вас какая-то каша с контролем readyState.
|
почитал, но не какой каши не увидел, мож я что то нето в других файлах сделал?
|
Цитата:
Разбираться в куче ваших readyState нет желания, если я правильно понял, что весь ваш код делает, то можно переписать как-то так: function process() { var url2 = document.getElementById("url2"); url2.innerHTML += '<img src="ajax-loader.gif" width="20" height="17">'; var url = encodeURIComponent(document.getElementById("url").value); var xhr = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP"); xhr.open("GET", "whois.php?url=" + url, true); xhr.send(null); (function() { if(xhr.readyState == 4) { if(xhr.status == 200) { url2.innerHTML = xhr.responeText; } else { alert(xhr.statusText); } } else { setTimeout(arguments.callee, 20); } }()); }на работоспособность не проверял, писал прямо на форум |
да так работает токо одно но, страницу приходиться вручную перезагружать!
|
зачем ее перезагружать?
|
ну вот я ввел домен например rambler.ru ниче не показало, а если я затем нажл обновить страницу то после обновления вывело информацию........
|
После обновления должна исходная страница отображаться, не знаю что у вас там происходит, покажите страницу.
|
Часовой пояс GMT +3, время: 07:04. |