|
|
|
| 1) что обозначает onreadystatechange?
2) readyState м.б. равен только 4. Почему?
3) status м.б. равен 200, 404 и еще чему-то. Что обозначают эти цифры?
Конкретно код:
function sendcom(id,name,email,homepage,text)
{
ajax_724.open("GET","http://akira.spb.su/mod/comment/get.php",true);
ajax_724.onreadystatechange=function() {
if (ajax_724.readyState==4) {
if (ajax_724.status==200) {
document.getElementById('comments_'+id).innerHTML=ajax_724.responseText
} else if (ajax_724.status==404) {
document.getElementById('comments_'+id).innerHTML='Error 404 - File not found !'
} else {
document.getElementById('comments_'+id).innerHTML='HTTP Status '+ajax_724.status+' !'
}
}
|
| |
|
|
|
|
|
|
|
для: 1999
(23.08.2006 в 13:18)
| | 200 - ОК, 404- страница не найдена. Это стандартные коды ошибок сервера. onreadystatechange- обработчик события, событие возникает при смене свойства readyState ActiveX-объекта. 4- объект создан и загружен (выполнено). Может быть также 0,1,2, и 3.
Кажись- так. | |
|
|
|
|
|
|
|
для: coloboc66
(23.08.2006 в 13:39)
| | а что значат 0, 1, 2 и 3? | |
|
|
|
|
|
|
|
для: 1999
(23.08.2006 в 14:24)
| | 0 = неинициализирован (uninitialized); 1 = «идет загрузка» (loading); 2 = «загружен» (loaded); 3 = «интерактивен» (interactive) 4 = «выполнен» (complete) | |
|
|
|
|
|
|
|
для: coloboc66
(23.08.2006 в 14:48)
| | ага ясна
а у метода open (ajax.open) какие параметры?
1 - наверно метод? (хотя как может быть метод POST)
2 - адрес. тут все понятно
3 - ??? | |
|
|
|
|
|
|
|
для: 1999
(23.08.2006 в 14:59)
| |
open(<method>, <URL> [, <asyncFlag>[, <userName>[, <password>]]])
|
Последние три необязательны. | |
|
|
|
|
|
|
|
для: coloboc66
(23.08.2006 в 15:19)
| | можно вопрос - откуда вы это все берете? | |
|
|
|
|
|
|
|
для: 1999
(23.08.2006 в 16:19)
| | Набираешь в Гугле, например: "методы свойства AJAX" и шерстишь по ссылкам. Способ очень удобен при халявном инете. Но и при платном полезные страницы можно сохранять на диск. Самое главное в Гугле хорошо сформировать запрос. Я смотрю- вы взяли пример Акиры- не советую. Он пользуется прототипом, а это довольно сложно для понимания. Чистый Аякс намного проще и позволяет разобраться в сути вещей. А прототип- для продвинутых. | |
|
|
|
|
|
|
|
для: coloboc66
(23.08.2006 в 16:41)
| | так это ведь и есть чистый аякс?
или может быть что-то проще
<script type="text/javascript">
var ajax;
try
{
ajax = new ActiveXObject("Msxml2.XMLHTTP")
}
catch (e)
{
try
{
ajax = new ActiveXObject("Microsoft.XMLHTTP")
}
catch (e)
{
ajax = false;
}
}
else
{
ajax = false;
}
if (!ajax && typeof XMLHttpRequest != 'undefined')
{
try
{
ajax = new XMLHttpRequest();
}
catch (e)
{
ajax = false;
}
}
</script>
|
??? - это ведь самое простое вроде)))
(до этого пользовался xajax'ом) | |
|
|
|
|
|
|
|
для: 1999
(23.08.2006 в 17:17)
| | Это да. Но здесь только создание объекта АктивХ. А дальше надо писать свои функции. Акира использует для этого прототип. Прототип- это как бы класс Аякса с набором функций, облегчающих написание собственных (его можно скачать из сети). Во всяком случае, лично Я так понимаю ситуацию. Не знаю, как вам, а мне легче было написать пару своих функций, чем разбираться с этим прототипом. Кстати, вот эти - это тоже ссылки на функции прототипа для обработки исключений. В чистом АЯКСЕ их нет. | |
|
|
|
|
|
|
|
для: coloboc66
(23.08.2006 в 17:34)
| | момент момент - а где он их использует?
хотите сказать, что ajax.open() - это не функция чистого аякса? но он же не сам ее писал? | |
|
|
|
|
|
|
|
для: 1999
(23.08.2006 в 17:40)
| | "момент момент - а где он их использует?"- посмотрите приведенный вами выше код. А ajax.open() - да - это метод Аякса. Я ж говорю- прототип- это набор функций для работы с Аяксом. Но там кроме стандартных методов аякса много других. Откройте файл с прототипом и посмотрите- там всего полно. С этим всем нужно разбираться. Я лично обломился, может вы способней. А что у вас там за код? Дайте ссылку на работающий пример. | |
|
|
|
|
|
|
|
для: 1999
(23.08.2006 в 13:18)
| | собственно весь пример - взял с первой новости блога:
<script type="text/javascript">
var ajax;
try
{
ajax = new ActiveXObject("Msxml2.XMLHTTP")
}
catch (e)
{
try
{
ajax = new ActiveXObject("Microsoft.XMLHTTP")
}
catch (e)
{
ajax = false;
}
}
else
{
ajax = false;
}
if (!ajax && typeof XMLHttpRequest != 'undefined')
{
try
{
ajax = new XMLHttpRequest();
}
catch (e)
{
ajax = false;
}
}
function sendcom(id,name,email,homepage,text)
{
ajax.open("GET","http://akira.spb.su/mod/comment/get.php",true);
ajax.onreadystatechange=function()
{
if (ajax.readyState == 4)
{
if (ajax.status == 200)
{
document.getElementById('comments_'+id).innerHTML = ajax.responseText;
}
else if (ajax.status == 404)
{
document.getElementById('comments_'+id).innerHTML = "Error 404 - File not found!";
}
else
{
document.getElementById('comments_'+id).innerHTML = "HTTP Status " +ajax_724.status+ "!";
}
}
}
}
ajax.setRequestHeader('ID',''+id+'')
ajax.setRequestHeader('NAME',''+name+'')
ajax.setRequestHeader('EMAIL',''+email+'')
ajax.setRequestHeader('HOMEPAGE',''+homepage+'')
ajax.setRequestHeader('TEXT',''+text+'')
ajax.send(null)
}
</script>
|
так выбираются комментарии к определенной записи в блоге. Вроде бы все просто.
А где же тот самый прототиповский файл? | |
|
|
|
|
|
|
|
для: 1999
(23.08.2006 в 17:56)
| | А этот пример работает у вас? Вы откуда код брали? Надо подумать- я просто привык, что Акира все делает с прототипом. Есть работающая ссылка? | |
|
|
|
|
|
|
|
для: coloboc66
(23.08.2006 в 18:01)
| | =) http://akira.spb.su/
прямо на главной - если прокурутить чуть ниже есть кнопка "читать (2)"
вот ее код:
<input style="border: 1px solid rgb(208, 208, 208); margin-top: -1px;" onclick="sendcom('82');look_comms('82')" id="submit_82" value="Читать (2)" type="button">
|
в начале страницы есть это:
<script type="text/javascript">
var ajax_646
/*@cc_on @*/
/*@if (@_jscript_version >= 5)
try {
ajax_646=new ActiveXObject("Msxml2.XMLHTTP")
} catch (e) {
try {
ajax_646=new ActiveXObject("Microsoft.XMLHTTP")
} catch (E) {
ajax_646=false
}
}
@else
ajax_646=false
@end @*/
if (!ajax_646 && typeof XMLHttpRequest!='undefined') {
try {
ajax_646 = new XMLHttpRequest();
} catch (e) {
ajax_646=false
}
}
</script>
<script type="text/javascript">
function sendcom(id,name,email,homepage,text){
ajax_646.open("GET","http://akira.spb.su/mod/comment/get.php",true);
ajax_646.onreadystatechange=function() {
if (ajax_646.readyState==4) {
if (ajax_646.status==200) {
document.getElementById('comments_'+id).innerHTML=ajax_646.responseText
} else if (ajax_646.status==404) {
document.getElementById('comments_'+id).innerHTML='Error 404 - File not found !'
} else {
document.getElementById('comments_'+id).innerHTML='HTTP Status '+ajax_646.status+' !'
}
}
}
ajax_646.setRequestHeader('ID',''+id+'')
ajax_646.setRequestHeader('NAME',''+name+'')
ajax_646.setRequestHeader('EMAIL',''+email+'')
ajax_646.setRequestHeader('HOMEPAGE',''+homepage+'')
ajax_646.setRequestHeader('TEXT',''+text+'')
ajax_646.send(null)
}
</script>
|
ф-ция look_comms
function look_comms(a){
if(document.getElementById("comments_"+a).style.display=="none"){
document.getElementById("comments_"+a).style.display="block";
}else{
if(document.getElementById("comments_"+a).style.display=="block"){
document.getElementById("comments_"+a).style.display="none";
}
}
};
|
| |
|
|
|
|
|
|
|
для: 1999
(23.08.2006 в 18:20)
| | понял о чем вы говорили.
http://akira.spb.su/upload/ajax/prototype.js
http://akira.spb.su/upload/ajax/kernel.js
это? | |
|
|
|
|
|
|
|
для: 1999
(23.08.2006 в 18:25)
| | еееее у меня заработало))) | |
|
|
|
|
|
|
|
для: 1999
(23.08.2006 в 18:48)
| | везде кроме ИЕ =( | |
|
|
|
|
|
|
|
для: 1999
(23.08.2006 в 19:13)
| | понял о чем вы говорили.
http://akira.spb.su/upload/ajax/prototype.js
http://akira.spb.su/upload/ajax/kernel.js
это?- Да- это. prototype.js | |
|
|
|