Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / AJAX, синхронный режим / 15 сообщений из 15, страница 1 из 1
18.06.2009, 14:55
    #36048481
serg-s-s
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AJAX, синхронный режим
Здравствуйте. Помогите разобраться с AJAX. Дело в том, что мне надо из TEXTAREA передать текст в нескольких порциях. Следовательно, я использую синхронную передачу, т.к нужно принимать пакеты один за одним. Но при этом зависает браузер IE. Как можно обойти зависание браузера, или возможно ли, в моем случае, использовать асинхронный режим?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
var req;
var url;
var text_send;

function send_data() 
{
  req = null;
  if (window.XMLHttpRequest) 
  {
    try 
    {
      req = new XMLHttpRequest();
    } 
    catch (e){}
  } 
  else if (window.ActiveXObject) 
  {
    try 
    {
      req = new ActiveXObject(''Msxml2.XMLHTTP'');
    } 
    catch (e)
    {
      try 
      {
        req = new ActiveXObject(''Microsoft.XMLHTTP'');
      } 
        catch (e){}
    }
  }
  if (req) 
  {
    url = "DownloadBigDoc.ADD?p_id=1521&p_text=";
    text_send = this.fforum.p_txts.value;
    for (var i =  1 ; i <= text_send.length; i++) 
    {
      url=url+encodeURIComponent(text_send.substring(i- 1 ,i));
      
      if (((i% 350 )== 0 )||(i==text_send.length))
      {
        req.open("POST",url, false);
        req.send(null);
        url="DownloadBigDoc.ADD?p_id=1521&p_text=";
      }
    }
  }
}
...
Рейтинг: 0 / 0
18.06.2009, 15:00
    #36048506
serg-s-s
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AJAX, синхронный режим
Совсем забыл, есть еще проблема.

Если в
Код: plaintext
if (((i% 350 )== 0 )||(i==text_send.length))
вместо 350 написать 500 и больше то выскакивает ошибка на строчке
Код: plaintext
req.send(null);
"Не удается найти указанный ресурс".
...
Рейтинг: 0 / 0
18.06.2009, 15:05
    #36048532
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AJAX, синхронный режим
Мож пакеты пронумеровать для асинхронной передачи....?

А какой смысл в передаче кусками? У серверов вроде достаточно большое ограничение, обычно от двух мегабайт, да можно и подкрутить. если надо больше....
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
18.06.2009, 15:36
    #36048629
IDVsbruck
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AJAX, синхронный режим
Я совсем не понимаю, зачем вобще реализовали синхронный режим, точнее, знаю - чтобы keep-alive можно было реализовать, но для целей, в которых его применяют в 99.9% - это глупость. Нельзя передавать данные в синхронном режиме!

А в твоем случае можно просто сделать рекурсию функции, которая отдает порции - очень просто. Для контроля используй внешние флаги: разбил на куски, отправил подготовительный пакет, в рекурсии отправил все куски. В подготовительном пакете ознакомили сервер с предстоящей передачей и количеством "кусков" - это наиболее простой и понятный способ ...

Но я также не понимаю, почему нельзя отправить все и сразу? Неужели настолько огромен textArea, что его надо разбирать? Если он "тянет" на мегабайты, интересно, как себя ведет страничка? ;)
...
Рейтинг: 0 / 0
18.06.2009, 16:28
    #36048808
Fund-A-Mental
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AJAX, синхронный режим
Может проще file upload использовать? Если textarea содержит такой огромный текст, что его надо на куски бить?
...
Рейтинг: 0 / 0
18.06.2009, 18:13
    #36049159
69
69
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AJAX, синхронный режим
Смени пут на гет и всех делов
...
Рейтинг: 0 / 0
18.06.2009, 21:33
    #36049415
serg-s-s
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AJAX, синхронный режим
Текст не всегда слишком огромный. Я использую mod_plsql в котором, к сожеленью, есть ограничение в 32К. Но иногда необходимо передать и больше размер. Для этого и необходимо разбить на куски.
...
Рейтинг: 0 / 0
18.06.2009, 21:36
    #36049418
serg-s-s
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AJAX, синхронный режим
69,
что, на что сменить?
...
Рейтинг: 0 / 0
18.06.2009, 21:37
    #36049421
serg-s-s
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AJAX, синхронный режим
IDVsbruckЯ совсем не понимаю, зачем вобще реализовали синхронный режим, точнее, знаю - чтобы keep-alive можно было реализовать, но для целей, в которых его применяют в 99.9% - это глупость. Нельзя передавать данные в синхронном режиме!

А в твоем случае можно просто сделать рекурсию функции, которая отдает порции - очень просто. Для контроля используй внешние флаги: разбил на куски, отправил подготовительный пакет, в рекурсии отправил все куски. В подготовительном пакете ознакомили сервер с предстоящей передачей и количеством "кусков" - это наиболее простой и понятный способ ...

Но я также не понимаю, почему нельзя отправить все и сразу? Неужели настолько огромен textArea, что его надо разбирать? Если он "тянет" на мегабайты, интересно, как себя ведет страничка? ;)

А это идея мне понравилась. Попробую реализовать.
...
Рейтинг: 0 / 0
18.06.2009, 22:30
    #36049484
69
69
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AJAX, синхронный режим
Млин, в натуре говорю - при запросе PUT ишак требует наличия http-параметров запроса иначе виснит - а ты о высоких материях...
...
Рейтинг: 0 / 0
18.06.2009, 22:34
    #36049489
69
69
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AJAX, синхронный режим
serg-s-s69,
что, на что сменить?

Замени POST на GET
...
Рейтинг: 0 / 0
19.06.2009, 16:35
    #36051252
serg-s-s
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AJAX, синхронный режим
69serg-s-s69,
что, на что сменить?

Замени POST на GET

и что с этого будет??? Если я не ошибаюсь, методом GET можно предать максимум 255 символов.
...
Рейтинг: 0 / 0
19.06.2009, 16:50
    #36051314
IDVsbruck
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AJAX, синхронный режим
4k
...
Рейтинг: 0 / 0
19.06.2009, 17:09
    #36051378
serg-s-s
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AJAX, синхронный режим
В любом случае, попробывал с get - не получилось. Все равно зависает.
...
Рейтинг: 0 / 0
19.06.2009, 18:26
    #36051573
69
69
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AJAX, синхронный режим
Что-то в этом духе

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
var url = "DownloadBigDoc.ADD";
var data = "p_id=1521&p_text=";

    text_send = this.fforum.p_txts.value;
    for (var i =  1 ; i <= text_send.length; i++) 
    {
      data = data +encodeURIComponent(text_send.substring(i- 1 ,i));
      
      if (((i% 350 )== 0 )||(i==text_send.length))
      {
        req.open("POST",url, false);
        req.send(data);
        url="DownloadBigDoc.ADD";
        data = "p_id=1521&p_text=";
      }

...
Рейтинг: 0 / 0
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / AJAX, синхронный режим / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]