|
|
|
|
|
для: TavRoX
(29.06.2011 в 16:18)
| | рейтинг на сайте
(это часть всего что надо для работы) | |
|
|
|
|
|
|
|
для: moonfox
(29.06.2011 в 00:47)
| | вопрос
а что этот скрипт делает?
лень вникать если честно | |
|
|
|
|
|
|
|
для: 0987654
(29.06.2011 в 00:42)
| | спасибо | |
|
|
|
|
автор: 0987654 (29.06.2011 в 00:42) |
|
|
для: moonfox
(29.06.2011 в 00:23)
| | Это как раз таки самый адекватный способ из существующих.
Можно, конечно, поменять местами строки - сначала open и send, и только потом назначить onreadystatechange - тогда функция теоретически сработает только два раза. Но здесь Вы рискуете не поймать данные - при хорошей связи ответ может сформироваться ранее, чем браузер назначит реквесту функцию.
Ну и, разумеется, можно вовсе не использовать onreadystatechange, а просто после send запустить таймер и через строго фиксированное время один раз проверить readyState. Но здесь Вы будете либо терять время (если связь хорошая), либо рискуете потеряете данные, если чуть-чуть не дождётесь ответа. | |
|
|
|
|
|
|
|
для: moonfox
(29.06.2011 в 00:21)
| | еще вопрос... это вообще адекватно или ..?))) | |
|
|
|
|
|
|
|
для: 0987654
(29.06.2011 в 00:18)
| | это я понял потом...)))
сорри | |
|
|
|
|
автор: 0987654 (29.06.2011 в 00:18) |
|
|
для: moonfox
(28.06.2011 в 23:19)
| | Вы же САМИ написали строку:
httpRequest.onreadystatechange = check4;
|
Которую на русском языке можно прочитать так: как только readyState объекта httpRequest изменится, то запускается функция check4
readyState в нормальном режиме изменяется с исходного 0 до 4 последовательно:
0 - объект создан, но ещё не инициализирован (не поступила команда open)
1 - объект открыт (сработал метод open), но запроса к серверу (send) ещё нет
2 - запрос серверу ушел (сработал send), но ответ с сервера ещё не поступал
3 - сервер начал отвечать, но responseText и responseBody ещё не сформированы
4 - ответ сервера получен полностью, все свойства доступны
В трёх первых случаях функция check4 запускается и происходит выход из неё return'ом.
В четвёртом (последнем) случае (когда readyState == 4) запускается функция processReqChange | |
|
|
|
|
|
|
| Здравствуйте,
почему то функция в аяксе срабатывает 5 раз...
function vote(str)
{
loadXMLDoc(str, '', 3);
}
|
var httpRequest;
var old_id = 'd0', old_txt = '', editor, idpost;
function loadXMLDoc(url, poststr, post)
{
idpost = post;
if (window.XMLHttpRequest) {
httpRequest = new XMLHttpRequest();
if (httpRequest.overrideMimeType) {
httpRequest.overrideMimeType('text/xml');
}
}
else if (window.ActiveXObject) {
try {
httpRequest = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e) {
try {
httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e) {}
}
}
if (!httpRequest) {
alert('Giving up :( Cannot create an XMLHTTP instance');
return false;
}
httpRequest.onreadystatechange = check4;
httpRequest.open("GET", url, true);
httpRequest.send(null);
}
function check4()
{
if (httpRequest.readyState != 4)
return;
processReqChange()
}
|
onclick="vote('vote.php?id=1&f=4&pos=1');"
function check4() - 5 раз отрабатывает.... с чем это может быть связано? | |
|
|
|
|