Проблемы с аяксом

N
На сайте с 14.06.2004
Offline
107
680

Сделал пол года назад скрипт,а теперьчто-то не могу в нем разобраться


ajaxvote.js
function jwAjaxVote(id,i,total,total_count, parent){
.................................
lsXmlHttp.onreadystatechange=function() {
var response;
if(lsXmlHttp.readyState==4){
setTimeout(function(){
response = lsXmlHttp.responseText;
if(response=='1') { div.innerHTML=jwajaxvote_lang['THANKS']; }
else
{ div.innerHTML=jwajaxvote_lang['ALREADY_VOTE']; }
},1000);

В этот яваскрипт файл данные отправляются из строчки:


<a href="javascript:void(null)" onclick="javascript:jwAjaxVote(".$link_id.",3,".$rating_sum.",".$rating_count.",".$parent.");" title="3 "._JWAJAXVOTE_STAR." 5" class="three-stars">3</a>

Подскажите откуда берет значение response в строчке response = lsXmlHttp.responseText;

Что возвращает lsXmlHttp.responseText? какой набор данных

ПЗ
На сайте с 10.10.2006
Offline
92
#1

Судя по коду Вы не все написали тут. Должна быть строка, которая указывает, куда отправляет данные (скрипт на Вашем сервере) объект lsXmlHttp

Автомобили в России (http://www.autobb.ru/). Спецтехника BIZ - вся строительная, дорожная, коммунальная техника (http://www.spectehnika.biz/) и другая спецтехника в одном месте.
N
На сайте с 14.06.2004
Offline
107
#2
Павел Зотов:
Судя по коду Вы не все написали тут. Должна быть строка, которая указывает, куда отправляет данные (скрипт на Вашем сервере) объект lsXmlHttp


lsXmlHttp.onreadystatechange=function() {
var response;
if(lsXmlHttp.readyState==4){
setTimeout(function(){
response = lsXmlHttp.responseText;
if(response=='1') { div.innerHTML=jwajaxvote_lang['THANKS']; }
else
{
div.innerHTML=jwajaxvote_lang['ALREADY_VOTE'];
}
},3000);
setTimeout(function(){
if(response=='1'){
var newtotal = total_count+1;
if(newtotal!=1) div.innerHTML='('+(newtotal)+' '+jwajaxvote_lang['VOTES']+')';
else div.innerHTML='('+(newtotal)+' '+jwajaxvote_lang['VOTE']+')';
var percentage = ((total + i)/(newtotal))*20;
document.getElementById('rating'+id+parent).style.width=percentage+'%';
} else {
if(total_count!=1) div.innerHTML='('+(total_count)+' '+jwajaxvote_lang['VOTES']+')';
else div.innerHTML='('+(total_count)+' '+jwajaxvote_lang['VOTE']+')';
}
},3000);
}
}
lsXmlHttp.open("GET",live_site+"/mambots/content/plugin_jw_ajaxvote/ajax.php?task=vote&user_rating="+i+"&cid="+id+"&parent="+parent,true);
lsXmlHttp.send(null);

Вот полный код Меня интересует что выполнется вначале lsXmlHttp.open или функции где стоит setTimeout

Интуитивно чувствую что сначала идет lsXmlHttp.open и lsXmlHttp.send. А потом попадаю на lsXmlHttp.onreadystatechange.

И почему-то lsXmlHttp.responseText всегда возвращает одно и то же значение - 0

T.R.O.N
На сайте с 18.05.2004
Offline
314
#3
Nicca:
Что возвращает lsXmlHttp.responseText? какой набор данных

просто текст, который возвращает скрипт из строки lsXmlHttp.open

От воздержания пока никто не умер. Хотя никто и не родился! Prototype.js был написан теми, кто не знает JavaScript, для тех, кто не знает JavaScript (Richard Cornford)
N
На сайте с 14.06.2004
Offline
107
#4


if(response=='1') { div.innerHTML=jwajaxvote_lang['THANKS']; }
else
{
div.innerHTML=jwajaxvote_lang['ALREADY_VOTE'];
}

У меня не выполняется div.innerHTML из первого setTimeout

Из другого вызова setTimeout div.innerHTML уже выполняется.

Как вобще можно тестировать яваскрипт? Например данные пхп я храню в файлы и потом смотрю значения на разных этапах.

А как с яваскриптом?

T.R.O.N
На сайте с 18.05.2004
Offline
314
#5
Nicca:
А как с яваскриптом?

функция alert(), или на странице делаеш поле textarea и туда выводиш все из JS как лог

SJ
На сайте с 16.03.2008
Offline
78
#6
T.R.O.N:
функция alert(), или на странице делаеш поле textarea и туда выводиш все из JS как лог

Да, из самых простых и быстрых решений - самое оно.

Еще можно юзать нормальные отладчики JS.

Я вот вобще все в Visual Studio делаю - и php, и JS, и .net всякий-разный :)

И пишу, и отлаживаю - очень удобно.

Любимый хостинг (http://beget.ru?id=2902) How can we grow old when the soundtrack of our lives is rock-n-roll?

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий