|
|
|
| Делаю так, а загружается почему-то только последний скрипт
мне что писать по 2 функции function createHttpRequest() и function getRequest()
а если нужно до 12 вызовов скриптов одновременно - многовато будет
возможно ли это как то поправить? (только не в цикле выполняться должно одновременно)
</script>
<script type="text/javascript">
var httpRequest = createHttpRequest();
var resultId = '';
function createHttpRequest()
{
var httpRequest;
var browser = navigator.appName;
if (browser == "Microsoft Internet Explorer")
{
httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
}
else
{
httpRequest = new XMLHttpRequest();
}
return httpRequest;
}
function sendRequest1()
{
var txt = document.getElementById("dog1").value;
var txt1 = document.getElementById("z1").value;
if (txt1=="ru"){ sendRequest('x1.php','result1',getRequest,txt,txt1); }
var txt2 = document.getElementById("z2").value;
if (txt2=="com"){sendRequest('x1.php','result2',getRequest,txt,txt2);}
}
function sendRequest(file, _resultId, getRequestProc,_txt,txtx1)
{
resultId = _resultId;
document.getElementById(resultId).innerHTML = '<img src="24-0.gif" width="24" height="24">';
httpRequest.open('post', file);
httpRequest.onreadystatechange = getRequestProc;
httpRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=windows-1251");
httpRequest.send("d="+_txt+"&z="+txtx1);
}
function getRequest()
{
if (httpRequest.readyState == 4)
{
document.getElementById(resultId).innerHTML = httpRequest.responseText;
}
}
</script>
<td valign="top"><p id="result1">po</p></td>
<td valign="top"><p id="result2">dog</p></td>
|
| |
|
|
|
|
|
|
|
для: Port_Artur1
(05.12.2007 в 23:40)
| | я вам в прошлом посте поправил, как надо правильнее
и писать снова не собираюсь... (надо создавать объект каждый раз для запроса)
если их несколько то в массив кладите | |
|
|
|
|
|
|
|
для: bronenos
(05.12.2007 в 23:54)
| | да нет всё работает - одновременно не получается
БУДУ думать
Вот сделал так
var httpRequest = createHttpRequest();
var httpRequest1 = createHttpRequest();
var resultId = '';
function createHttpRequest()
{
var httpRequest;
var browser = navigator.appName;
if (browser == "Microsoft Internet Explorer")
{
httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
}
else
{
httpRequest = new XMLHttpRequest();
}
return httpRequest;
}
|
остальные функции в экземплярах - нехочет работать | |
|
|
|
|
|
|
|
для: Port_Artur1
(06.12.2007 в 00:00)
| | не в хорошем месте объект создаете
мой пост прочитайте | |
|
|
|
|
|
|
|
для: bronenos
(06.12.2007 в 01:10)
| | если писать так как вы предложили
var httpRequest = createHttpRequest();
httpRequest.open('post', file);
|
то в функции GetRequest возникает ошибка "httpRequest - отсутствует определение"
Ниже Весь ваш пример | |
|
|
|
|
|
|
|
для: Port_Artur1
(06.12.2007 в 08:38)
| |
<script type="text/javascript">
var resultId = '';
function createHttpRequest()
{
var httpRequest;
var browser = navigator.appName;
if (window.ActiveXObject)
{
httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
}
else
{
httpRequest = new XMLHttpRequest();
}
return httpRequest;
}
function sendRequest(file, _resultId, getRequestProc)
{
resultId = _resultId;
document.getElementById(resultId).innerHTML = '<img src="24-0.gif" width="24" height="24">';
var txt = document.getElementById("d1").value;
var txt1 = document.getElementById("zu1").value;
var txt2 = document.getElementById("zm1").value;
var txt3 = document.getElementById("zt1").value;
var txt4 = document.getElementById("zo1").value;
var txt5 = document.getElementById("zi1").value;
var txt6 = document.getElementById("zfs1").value;
var httpRequest = createHttpRequest();
httpRequest.open('post', file);
httpRequest.onreadystatechange = getRequestProc;
httpRequest.send("dwer="+txt);
httpRequest.send("weru="+txt1);
httpRequest.send("werm="+txt2);
httpRequest.send("wtetet="+txt3);
httpRequest.send("erg="+txt4);
httpRequest.send("ert="+txt5);
httpRequest.send("ewrtfo="+txt6);
}
function getRequest()
{
if (httpRequest.readyState == 4)
{
document.getElementById(resultId).innerHTML = httpRequest.responseText;
}
}
</script>
<input id="doert1" name="d345" type="TEXT" class="check" size="21" maxlength="63" onkeypress="if (event.keyCode==13) sendRequest('ddddd.php','result',getRequest);" >
<p id="result">Здесь будет результат запроса</p>
|
| |
|
|
|
|
|
|
|
для: Port_Artur1
(06.12.2007 в 08:38)
| | Да, что то- не удаётся от этого избавиться? | |
|
|
|
|
|
|
|
для: Port_Artur1
(06.12.2007 в 08:52)
| | пока что я не вижу проблем
но то. что надо создавать объект каждый раз это точно...
ща посмотрю, где может быть проблема (вы, кстати, с какого браузера сидите?) | |
|
|
|
|
|
|
|
для: bronenos
(06.12.2007 в 10:41)
| | сижу с Opera а проверяю в IE | |
|
|
|
|
|
|
|
для: Port_Artur1
(06.12.2007 в 08:52)
| | перед объявлением функции createHttpRequest напишите
var httpRequest;
чтобы сделать переменную глобальной
а то обработчик ее не видит
и в функции отправки запроса при создании объекта уберите слово var
а в функции создания лучше дайте переменной другое имя... | |
|
|
|
|
|
|
|
для: bronenos
(06.12.2007 в 10:51)
| | Загружается почему то только первый запрос а ответ отображается аж последнем (в данном случае во втором, но пробовал и 3 и 7 запросов всё-равно )
первый запрос - результат получаем только в последнем а первые несколько пустые
Поскольку сервер на обработку скрипта затрачивает какое=то время а запросы проходят практичеки одновременно - поэтому наверное так и получается , Как этого избежать!
может им как то определить индексы или это в данном случае не поможет? | |
|
|
|
|
|
|
|
для: Port_Artur1
(06.12.2007 в 11:31)
| | ну так если используется одна переменная для всех запросов...
загоните в массив... | |
|
|
|
|
|
|
|
для: bronenos
(06.12.2007 в 14:21)
| |
<script type="text/javascript">
var httpRequest;
var resultId = '';
function createHttpRequest1()
{
var httpRequest1;
var browser = navigator.appName;
if (browser == "Microsoft Internet Explorer")
{
httpRequest1 = new ActiveXObject("Microsoft.XMLHTTP");
}
else
{
httpRequest1 = new XMLHttpRequest();
}
return httpRequest1;
}
function sendRequest1(file, _resultId, getRequestProc1)
{ var txt = document.getElementById("dq1").value;
var txt1 = document.getElementById("zr1").value;
if (txt1=="ru"){sendRequest('dx1.php','result1',getRequest,txt,txt1);}
var txt2 = document.getElementById("zm1").value;
if (txt2=="com"){sendRequest('dx1.php','result2',getRequest,txt,txt2);}
var txt3 = document.getElementById("zt1").value;
if (txt3=="net"){sendRequest('dx1.php','result3',getRequest,txt,txt3);}
}
function sendRequest(file, _resultId, getRequestProc,_txt,txtx1)
{
resultId = _resultId;
document.getElementById(resultId).innerHTML = '<img src="24-0.gif" width="24" height="24">';
httpRequest = createHttpRequest1();
httpRequest.open('post', file);
httpRequest.onreadystatechange = getRequestProc;
httpRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=windows-1251");
httpRequest.send("d="+_txt+"&n="+txtx1);
}
function getRequest()
{
if (httpRequest.readyState == 4)
{
document.getElementById(resultId).innerHTML = httpRequest.responseText;
}
}
</script>
<input id="dq1" name="dq" type="TEXT" class="check" size="21" maxlength="63" onKeyPress="sendRequest1('domen_x1.php','result1',getRequest);" >
|
я извиняюсь но с массивами в JS что то туго поробовал типа везде httpRequest[n]
но по моему не то | |
|
|
|
|
|
|
|
для: Port_Artur1
(06.12.2007 в 15:46)
| | function getRequest() встречается в Input так вот для передачи параметра в неё для httpRequest[n] - в Input возникает ошибка что параметр не определён
а как я его определю если он передаётся в скрипте?
function getRequest(n)
{
if (httpRequest[n].readyState == 4)
{
document.getElementById(resultId).innerHTML = httpRequest[n].responseText;
}
}
|
| |
|
|
|
|
|
|
|
для: Port_Artur1
(06.12.2007 в 15:51)
| | у меня происходит все в библе - она и заботится о id, потому... сложно сказать как пользоваться индексами без участия серверной стороны.... если кто скажет, я смогу у себя отказаться в ряде скрипта от сервера...
так что не могу сказать вот так вот... писать это дело долго | |
|
|
|
|
|
|
|
для: bronenos
(06.12.2007 в 16:43)
| | НУ может кто ещё знает как это сделать? | |
|
|
|
|
|
|
|
для: Port_Artur1
(06.12.2007 в 17:21)
| | скорее всего не получится делать несколько запросов сразу без участия серверной стороны.. я не вижу способов это сделать... хотя я в js уже твердо стою.... | |
|
|
|
|
|
|
|
для: bronenos
(06.12.2007 в 17:52)
| | Поможите люди добрые я сам не соображу как но очень хочется
Взываю к Cheops!!! | |
|
|
|
|
|
|
|
для: Port_Artur1
(06.12.2007 в 21:32)
| | можно с оперы осуществить (возможно, и с фф), но вот с ие - нет
а я предлагаю тока кроссбраузерные варианты | |
|
|
|
|
|
|
|
для: bronenos
(06.12.2007 в 21:40)
| | рою интернет уже какой день ничего подобного моему случаю пока не встречал! | |
|
|
|
|
|
|
|
для: Port_Artur1
(07.12.2007 в 07:59)
| | может можно как то от сюда оттолкнуться
http://softtime.ru/forum/read.php?id_forum=4&id_theme=36588&page=10
автор: coloboc66 (26.04.2007 в 16:21) письмо автору
Тогда аяксом два раза отправлять данные одному и тому же РНР-файлу, но с разными параметрами content type в setRequestheader () аякса. Больше ничего в голову не приходит. Еще нужно уточнить- возможно ли вообще отправлять рисунки аяксом...
|
| |
|
|
|
|
|
|
|
для: Port_Artur1
(07.12.2007 в 07:59)
| | я считаю бесполезно рыть
надо самому думать в даннлй ситуации... | |
|
|
|
|
|
|
|
для: bronenos
(07.12.2007 в 12:42)
| | Дык в JS мне особенно то и нечем , но работаю над собой, потому вот и спрашиваю! | |
|
|
|
|
|
|
|
для: Port_Artur1
(07.12.2007 в 14:46)
| | Напиши мне в асю (4110863) - поговорим =)
(тока я ща есть ухожу, поэтому могу не ответить в течение минут десяти), и еще напиши что ты с форума.. а то спама много... чищу каждого второго | |
|
|
|
|
|
|
|
для: bronenos
(07.12.2007 в 15:11)
| | Ну вот...
Такое интересное обсуждение ушло со страниц форума. | |
|
|
|
|
|
|
|
для: Eugene77
(07.12.2007 в 18:51)
| | а я наоборот думал никому не надо ))
ладно, тогда отмена))
ща подумаю как сделать решение вашей (и моей по соседству) проблеме | |
|
|
|
|
|
|
|
для: Eugene77
(07.12.2007 в 18:51)
| | вот для оперы и лисы я нашел решение, а вот ослик пока под вопросом
решение складывается к сохранению в массиве обработчиков объектов, а самим объектам присвоения id
вот пример
/* Хранилище уникальных обработчиков */
var processes = {};
/* Обработчик для всех запросов */
function multiprocess()
{
/* Запрос завершен и страница загружена? */
if (this.readyState < 4) continue;
/* Запускаем пользовательскую функцию для данного запроса */
if (processes[this.id])
{
processes[this.id](this.responseText);
delete processes[this.id];
}
}
var obj = new XMLHttpRequest();
var id = Math.round(Math.random() * 1000); /* в реальном коде надо сделать проверку на существующий id */
obj.id = id;
obj.onreadystatechange = multiprocess;
processes[id] = function(r) { alert("Получен ответ: "+r); }
|
| |
|
|
|
|
|
|
|
для: bronenos
(07.12.2007 в 20:03)
| | Спасибо за пример посмотрю позже надо съездить по делам а вот только напишите что такое лиса и ослик | |
|
|
|
|
|
|
|
для: Port_Artur1
(08.12.2007 в 11:38)
| | FireFox, IE соответственно | |
|
|
|
|
|
|
|
для: bronenos
(08.12.2007 в 12:07)
| | Например, Internet Explorer разрешает только 2 одновременных AJAX-запроса в данный момент времени. Другие браузеры могут разрешать большее число запросов, но обычно от 3 до 5.
http://joomart.org/component/option,com_smf/Itemid,2/topic,163.msg238/
Ну думаю что дальше рыть действительно без вариантов - т.к. мне надо было 6 запросов одновременно после этого теряется смысл идеи как читал 1 запрос на 10кБ БЫСТРЕЕ ЧЕМ 10 ПО 1Кб нО ЕСЛИ КТО -ТО ВСЁ ЖЕ РЕШИТ ДАННЫЙ ВОПРОС ТО БУДУ РАД БУДУ БЛАГОДАРЕН ЕСЛИ ИЗВЕСТЯТ МЕНЯ ОБ ЭТОМ icq 296001157 | |
|
|
|
|
|
|
|
для: Port_Artur1
(08.12.2007 в 20:34)
| | а ты уверен, что запрос к одному скрипту не заменит эти 6 запросов? | |
|
|
|