Форум dkLab и Denwer
Здесь общаются Web-разработчики.
Генеральный спонсор:
Хостинг «Джино»

JsHttpRequest 5: Кроссбраузерный AJAX + закачка файлов. (Дмитрий Котеров)
Goto page Previous  1, 2, 3, 4  Next
Author Message
SviMik
Заглянувший



Joined: 13 Jun 2006
Posts: 17
Карма: -2
   поощрить/наказать

Location: Tallinn, Эстония

PostPosted: Sat May 12, 2007 1:04 pm ()
   Post subject:
Reply with quote

А вот у меня с оперой 7 проблема, IE и FF норм.
И похоже что автор скрипта куда-то надолго пропал =\
Back to top
View user's profile Send private message
Kupuyc
Участник форума



Joined: 31 Mar 2006
Posts: 146
Карма: 5
   поощрить/наказать


PostPosted: Sat May 12, 2007 1:44 pm (спустя 40 минут; написано за 1 минуту 39 секунд)
   Post subject:
Reply with quote

Автор, видимо, творит еще что-то революционное или пьет чай. А Вы бы забили на седьмую оперу быть может? Ей сто лет в обед - раз, исчезающий без каких-либо на то препятствий вид - два.
Back to top
View user's profile Send private message
Andrew P
Заглянувший



Joined: 14 May 2007
Posts: 1
Карма: 0
   поощрить/наказать


PostPosted: Mon May 14, 2007 12:51 am (спустя 1 день 11 часов 6 минут; написано за 7 минут 29 секунд)
   Post subject:
Reply with quote

Здравствуйте еще раз всем.

Может это особо и не надо, но себе я сделал такую вот штуковину - добавил в самом начале JsHttpRequest.php код:
Code (php): скопировать код в буфер обмена
if( isset (www.php.net/isset)($_REQUEST['JsHttpRequest']) ){
  $private_variable_JsHttpRequest = new JsHttpRequest("windows-1251");
}
Мысль в том, что если скрипт вызывался через библиотеку JsHttpRequest.js, (определен параметр JsHttpRequest), то можно сразу создать экземпляр объекта JsHttpRequest.

Особо много это конечно не дает, но зато не надо каждый раз писать создание объекта JsHttpRequest в основном скрипте (правда здесь кодировка жестко задана... но для меня и так пока нормально было, а думать - лень).
Back to top
View user's profile Send private message
Юрик
Участник форума



Joined: 21 Nov 2003
Posts: 49
Карма: 3
   поощрить/наказать

Location: Питер

PostPosted: Mon May 14, 2007 7:23 pm (спустя 18 часов 32 минуты; написано за 1 минуту 44 секунды)
   Post subject:
Reply with quote

Добрый день, Opera 7.23, при выполнении запроса открывает ссылку в новом окне:
acp/index_js.php?JsHttpRequest=117915993386417-form

Версия библиотеки 3.x работала с этим же браузером вполне корректно.
з.ы. в более новой Опере не проверял пока что
Back to top
View user's profile Send private message
Guest






Карма: 388
   поощрить/наказать


PostPosted: Mon May 14, 2007 10:02 pm (спустя 2 часа 38 минут; написано за 1 минуту 47 секунд)
   Post subject:
Reply with quote

Подскажите пожалуйста, в какую сторону копать в случае если JsHttpRequest (используется последняя версия библиотеки), не осуществляет перехват фатальных ошибок PHP в backend?
Back to top
Юрий Насретдинов
Модератор



Joined: 13 Mar 2003
Posts: 8642
Карма: 197
   поощрить/наказать

Location: 007 495

PostPosted: Tue May 15, 2007 2:59 am (спустя 4 часа 57 минут; написано за 1 секунду)
   Post subject:
Reply with quote

В ней нет обработки parse error и memory limit exceeded. Причина в том, что это почти нереально перехватить.
Back to top
View user's profile Send private message Send e-mail
Guest






Карма: 388
   поощрить/наказать


PostPosted: Tue May 15, 2007 10:04 am (спустя 7 часов 4 минуты; написано за 20 секунд)
   Post subject:
Reply with quote

Юpий Насрeтдинов
большое спасибо за информацию...
Back to top
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 412
   поощрить/наказать


PostPosted: Tue May 15, 2007 7:03 pm (спустя 8 часов 59 минут; написано за 53 секунды)
   Post subject:
Reply with quote

Юpий Насрeтдинов
Неправда твоя. Parse error не обрабатывается только в одном случае - если синтаксическая ошибка находится В ТОМ ЖЕ ФАЙЛЕ, где создается объект JsHttpRequest. Если ошибка в любом другом включенном файле, то она корректно обрабатывается.
Back to top
View user's profile Send private message Send e-mail
Юрий Насретдинов
Модератор



Joined: 13 Mar 2003
Posts: 8642
Карма: 197
   поощрить/наказать

Location: 007 495

PostPosted: Thu May 17, 2007 6:56 pm (спустя 1 день 23 часа 52 минуты; написано за 1 минуту 4 секунды)
   Post subject:
Reply with quote

Дмитрий Котеров wrote:
если синтаксическая ошибка находится В ТОМ ЖЕ ФАЙЛЕ, где создается объект JsHttpRequest.
Это выполняется в 80% процентов случаев, этого ИМХО достаточно чтобы говорить, что ошибка Parse error не перехватывается.
Back to top
View user's profile Send private message Send e-mail
Юрик
Участник форума



Joined: 21 Nov 2003
Posts: 49
Карма: 3
   поощрить/наказать

Location: Питер

PostPosted: Thu May 17, 2007 8:20 pm (спустя 1 час 23 минуты; написано за 4 минуты 9 секунд)
   Post subject:
Reply with quote

fastkill wrote:
Добрый день, Opera 7.23, при выполнении запроса открывает ссылку в новом окне:
acp/index_js.php?JsHttpRequest=117915993386417-form
Прошу прощения, тревога ложная - в параметрах был явно указан POST, поэтому и не работало. Теперь всё ok.

Вопрос: поддерживается ли отправка формы целиком (по указателю на форму) без enctype="multipart/form-data" (файловых полей, естественно, нет)?
Back to top
View user's profile Send private message
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 412
   поощрить/наказать


PostPosted: Fri May 18, 2007 12:43 am (спустя 4 часа 22 минуты; написано за 1 минуту 8 секунд)
   Post subject:
Reply with quote

Юpий Насрeтдинов wrote:
Это выполняется в 80% процентов случаев
Если архитектура системы продумывалась "на коленке" - то да, в 80% случаев. А если все сделано по уму, и есть центральный контроллер для аякс-запросов, - то нет.
fastkill wrote:
поддерживается ли отправка формы целиком (по указателю на форму) без enctype="multipart/form-data" (файловых полей, естественно, нет)?
А Вы проверьте. Я бы не рекомендовал этого делать - хотя бы из соображений совместимости.
Back to top
View user's profile Send private message Send e-mail
Юрий Насретдинов
Модератор



Joined: 13 Mar 2003
Posts: 8642
Карма: 197
   поощрить/наказать

Location: 007 495

PostPosted: Fri May 18, 2007 1:14 am (спустя 31 минуту; написано за 1 минуту 25 секунд)
   Post subject:
Reply with quote

Дмитрий Котеров wrote:
А если все сделано по уму, и есть центральный контроллер для аякс-запросов, - то нет.
Согласен. В любом случае, лично у меня всё равно получается так, что класс JsHttpRequest создаётся в том же файле, что и обработчик. Я думаю, что наш с тобой не имеет смысла :). Всё равно не всегда перехватывает твоя библиотека Parse error из-за специфики PHP и ничего тут не поделаешь.
Back to top
View user's profile Send private message Send e-mail
Юрик
Участник форума



Joined: 21 Nov 2003
Posts: 49
Карма: 3
   поощрить/наказать

Location: Питер

PostPosted: Fri May 18, 2007 8:01 pm (спустя 18 часов 46 минут; написано за 6 минут 30 секунд)
   Post subject:
Reply with quote

Дмитрий Котеров wrote:
fastkill wrote:
поддерживается ли отправка формы целиком (по указателю на форму) без enctype="multipart/form-data" (файловых полей, естественно, нет)?
А Вы проверьте. Я бы не рекомендовал этого делать - хотя бы из соображений совместимости.
Видимо, не совсем правильно сформулировал вопрос.
В общем, посмотрел исходники класса, поэкспериментировал с заргузчиком. Получается, что каждый раз при отправке формы гоняется IFRAME (будь то указатель на элемент или на всю форму - если queryElem не пуст, то всегда вызывается JsHttpRequest.LOADERS.form), хотя иногда можно обойтись без него.
Ведь IFRAME, по сути дела, нужен только в том случае, если в форме есть файл.
Поэтому такое предложение: при отправке проверять, есть ли хоть один <input type="file" />, если нет, то
конвертировать всю форму в ассоциативный массив и использовать стандартную схему загрузки. В противном случае - IFRAME.
+ Можно предусмотреть принудительное использование IFRAME, если это так нужно.
+ Можно проверять по наличию "multipart/form-data".
Идеологически это вполне оправдано: если в форме указан method="get", то предполагается, что данные должны передаваться в составе адресной строки - тем более IFRAME ни к чему.

Функция, которую я в данный момент использую для подготовки формы, выглядит так (практически полностью составлена из кусочков JsHttpRequest :-) ):
Code (JavaScript): скопировать код в буфер обмена
var JsHttpRequestUrl = 'index_js.php';
 function js_FORM(form)
 {
   var queryText = [];
   for (var k = 0, lim = form.elements.length; k<lim; k++)
   {
     var v = form.elements[k];
     var tn = (v.tagName != undefined ? v.tagName.toUpperCase() : '');
     if (tn == 'INPUT' || tn == 'TEXTAREA' || tn == 'SELECT')
     {
       var type = v.type.toLowerCase();
       if (type=='radio' && !v.checked) continue;
       //verifing checked && value for Opera 7.23:
       var val = (type=='checkbox') ? ((v.checked==true) ? v.value : "") : v.value;
       queryText[queryText.length] = '' + v.name + "=" + escape('' + val).replace(new RegExp('\\+','g'), '%2B');
     }
   }
   
   var url = JsHttpRequestUrl + '?' + queryText.join('&');
   //window.alert(url);
   js_load({}, 'GET', url);
   return false;
 }
Она формирует строку запроса, которая передаётся в JsHttpRequest:
Code (JavaScript): скопировать код в буфер обмена
function js_load(arr, jsmethod, jsurl)
 {
   //...
   var req = new JsHttpRequest();
   //...
   //...
   
   req.open(jsmethod, jsurl, true);
   req.send(arr);
   return false;
 }
.

p.s. пара вопросов:
1. В чём разница?
Code (JavaScript): скопировать код в буфер обмена
if (''+typeof(content)).toLowerCase() == 'object')
if (v instanceof Object)
просто в классе используется и то, и то - это так задумано или всё равно?

2. В Opera 7.23 таки не работает iframe - открывает форму в новом окошке :(
Code (any language): скопировать код в буфер обмена
http://acp/index_js.php?JsHttpRequest=11795074992474-form
Back to top
View user's profile Send private message
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 412
   поощрить/наказать


PostPosted: Sun May 20, 2007 3:37 pm (спустя 1 день 19 часов 36 минут; написано за 43 секунды)
   Post subject:
Reply with quote

Юрик wrote:
Поэтому такое предложение: при отправке проверять, есть ли хоть один <input type="file" />, если нет, то
конвертировать всю форму в ассоциативный массив и использовать стандартную схему загрузки.
Такая возможность есть в планах.
Юрик wrote:
В чём разница?
Думаю, просто старый код.
Юрик wrote:
В Opera 7.23 таки не работает iframe - открывает форму в новом окошке
Работы над исправлением ведутся.
Back to top
View user's profile Send private message Send e-mail
MihaKot
Guest





Карма: 388
   поощрить/наказать


PostPosted: Fri Jun 22, 2007 1:43 pm (спустя 1 месяц 1 день 22 часа 5 минут; написано за 1 минуту 25 секунд)
   Post subject: Отображение в IE&Opera
Reply with quote

такая проблема.
В Mozilla все нормально отображается.
а в IE7 как и 6, и в Opera, почему то все выпадающие списки которые формирую, не отображаются.
пример работы тут
mihakot.spb.ru/travel/
Back to top
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 412
   поощрить/наказать


PostPosted: Sun Jun 24, 2007 12:40 pm (спустя 1 день 22 часа 56 минут; написано за 33 секунды)
   Post subject:
Reply with quote

А какое это отношение имеет к библиотеке? Попробуйте запустить тестовые примеры в Вашем IE7 или Opera. Если работают, то библиотека ни при чем.
Back to top
View user's profile Send private message Send e-mail
NilColor
Заглянувший



Joined: 07 Jul 2006
Posts: 4
Карма: 0
   поощрить/наказать


PostPosted: Tue Jun 26, 2007 4:34 pm (спустя 2 дня 3 часа 54 минуты; написано за 2 минуты 20 секунд)
   Post subject:
Reply with quote

Господа... а можно еще раз поднять тему про Prototype.js?
Если я правильно понял, то JSHTTPRequest и Prototype [по большому] различаются только тем, что у первого есть backend, которые умеет красиво готовить ответ для frontend'а... так? Если я не прав - то может кто-то сможет подсказать, можно ли их использовать вместе и если да - то как?
Back to top
View user's profile Send private message
Sergey M.
Заглянувший



Joined: 25 Jul 2005
Posts: 8
Карма: 2
   поощрить/наказать


PostPosted: Fri Jun 29, 2007 12:10 pm (спустя 2 дня 19 часов 35 минут)
   Post subject: query()
Reply with quote

lib.dklab.ru/JsHttpRequest/test/JsHttpRequest/t_query.php

с этой тестовой страницы все запросы бакенду уходят с идентификатором равным 0 (0-xml)
особых проблем при этом не возникает, однако есть подозрения что так быть не должно ;)
Back to top
View user's profile Send private message
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 412
   поощрить/наказать


PostPosted: Mon Jul 02, 2007 1:28 pm (спустя 3 дня 1 час 17 минут; написано за 1 минуту 6 секунд)
   Post subject:
Reply with quote

NilColor
Еще там правильно поддерживаются русские кодировки, а также передача многомерных структур в обе стороны. И кроссбраузерность лучше. И файлы можно закачивать.
Короче, отличий просто море.

Sergey M.
Нет, именно так и должно быть. Все верно.
Back to top
View user's profile Send private message Send e-mail
SviMik
Заглянувший



Joined: 13 Jun 2006
Posts: 17
Карма: -2
   поощрить/наказать

Location: Tallinn, Эстония

PostPosted: Sat Aug 04, 2007 3:19 am (спустя 1 месяц 1 день 13 часов 51 минуту)
   Post subject:
Reply with quote

Mozilla 1.7.3 иногда выдаёт
Code (any language): скопировать код в буфер обмена
Ошибка: uncaught exception: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIXMLHttpRequest.open]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: http://***/jhr.js :: anonymous :: line 391"  data: no]
Всё перерыл - ну никак не пойму в чём причина =\
Back to top
View user's profile Send private message
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 412
   поощрить/наказать


PostPosted: Sat Aug 04, 2007 2:32 pm (спустя 11 часов 13 минут; написано за 39 секунд)
   Post subject:
Reply with quote

Вы уверены, что это ошибка в библиотеке? Я такое сообщение видел и в местах, где ее нет.
Back to top
View user's profile Send private message Send e-mail
SviMik
Заглянувший



Joined: 13 Jun 2006
Posts: 17
Карма: -2
   поощрить/наказать

Location: Tallinn, Эстония

PostPosted: Sat Aug 04, 2007 10:09 pm (спустя 7 часов 36 минут)
   Post subject:
Reply with quote

Не буду утверждать на 100% (может действительно и я напортачил).
Во-первых 'location: "JS frame :: http://***/jhr.js' - это и есть JsHttpRequest.js. Т.е. скорее всего ошибка внутри библиотеки.
Во-вторых там две элементарных функции "почти из примера". И глючит почему-то всегда на третий раз. Т.е. 2 раза они отработали нормально, третий раз одна из них не срабатывает.

Даже не знаю где копать. Могу дать линк. Один факт - в опере 9.2 всё работает идеально. Мой код на столько простой, что от браузера зависеть не должен. Остаётся библиотека.

ЗЫ. Один сайт уже на этой библиотеке делал, получилось вполне удачно.
Back to top
View user's profile Send private message
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 412
   поощрить/наказать


PostPosted: Sat Aug 04, 2007 10:50 pm (спустя 40 минут; написано за 1 минуту 8 секунд)
   Post subject:
Reply with quote

А какой код у Вас в библиотеке на строке "line 391"?
Линк давайте, конечно.
Вот еще, кстати, попробуйте посмотреть: результаты поиска в гугле (www.google.ru/search?hl=ru&newwindow=1&client=firefox-a&rls=org.mozilla%3Aru%3Aofficial&hs=ok4&q=Component+returned+failure+code%3A+0x80004005++nsIXMLHttpRequest.open&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA&lr=)

Ошибка касается XMLHttpRequest.
Back to top
View user's profile Send private message Send e-mail
Юрий Насретдинов
Модератор



Joined: 13 Mar 2003
Posts: 8642
Карма: 197
   поощрить/наказать

Location: 007 495

PostPosted: Sat Aug 04, 2007 11:18 pm (спустя 27 минут; написано за 26 секунд)
   Post subject:
Reply with quote

SviMik
Попробуйте поставить другую версию Mozilla и сравните. Не похоже это на ошибку библиотеки, честное слово...
Back to top
View user's profile Send private message Send e-mail
SviMik
Заглянувший



Joined: 13 Jun 2006
Posts: 17
Карма: -2
   поощрить/наказать

Location: Tallinn, Эстония

PostPosted: Sun Aug 05, 2007 10:23 pm (спустя 23 часа 4 минуты)
   Post subject:
Reply with quote

Ещё одни сутки плясок c бубном и удалось выделить баг.
svimik.servehttp.com/abug/
Форма подшружается динамически кнопкой вверху. Чтоб появился баг - надо подгруженную форму пару раз отправить (при отправлении она также обновляется). В остальном см. коментарии на странице.

Юpий Насрeтдинов Тот же баг и в Mozilla Firefox.

>А какой код у Вас в библиотеке на строке "line 391"?
Да я собственно её и не трогал. На днях свежую скачал.
Code (any language): скопировать код в буфер обмена
xr.open(this.method,this.url,true,this.username,this.password);
Back to top
View user's profile Send private message
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 412
   поощрить/наказать


PostPosted: Wed Aug 08, 2007 12:48 am (спустя 2 дня 2 часа 25 минут; написано за 17 секунд)
   Post subject:
Reply with quote

Попробуйте локализовать ошибку еще больше. В таком виде сложно что-то сказать.
Back to top
View user's profile Send private message Send e-mail
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 412
   поощрить/наказать


PostPosted: Wed Aug 08, 2007 12:59 am (спустя 10 минут; написано за 8 минут 54 секунды)
   Post subject:
Reply with quote

Выкладываю для тестирования новую версию библиотеки.
Скачать можно, как обычно, тут: dklab.ru/lib/JsHttpRequest/demo.zip
Все, кто заинтересован, - попробуйте у себя это поиспользовать, пожалуйста. Если все будет хорошо, выложу в релизную ветку.

Что добавилось:
  1. Теперь все Fatal error-ы PHP приходят во frontend со статусом 500-й ошибки. К сожалению, чтобы этого добиться, пришлось применить ряд грязных хаков (однако других способов в PHP, похоже, нет). Варнинги и нотисы в 500-е ошибки не преобразуются. Считается, что если в $obj->RESULT или $GLOBALS['_RESULT'] записан null, то это и есть признак 500-й ошибки.
  2. Интеграция с библиотекой Prototype. Чтобы подключить, надо дополнительно подгрузить небольшой файлик JsHttpRequest-prototype.js, который лежит в дистрибутиве. После этого можно делать вот такие интересные вещи:
    Code (JavaScript): скопировать код в буфер обмена
        //
        new Ajax.Request('contrib/loader.php', {
            method: 'get',
            parameters: { q: 'abc' },
            onSuccess: function(transport) {
                alert(transport.responseText);
                alert(transport.responseJS.md5);
            }
        });   

        //
        new Ajax.Request('script.GET contrib/loader.php', {
            parameters: { q: '' },
            onSuccess: function(transport) {
                alert(transport.responseText);
                alert(transport.responseJS.md5);
            }
        });   
       
        //
        new Ajax.Request('xml.GET contrib/loader.php', {
            parameters: { q: 'error'},
            onFailure: function(transport) {
                alert('Error code: ' + transport.status + '\n');
                alert(transport.responseText);
            },
            onSuccess: function(transport) {
                alert(transport.responseJS);
            }
        });   

        //
        new Ajax.Request('contrib/loader.php', {
            parameters: { e: $('e_file') },
            onSuccess: function(transport) {
                alert('text:\n' + transport.responseText);
                alert('md5: ' + transport.responseJS.md5);
            }
        });
    К сожалению, поддержка аякса в Prototype не настолько универсальна, чтобы можно было сделать прозрачную интеграцию на наследовании (мешает Hash.toQueryString(), который, естественно, поля закачки не понимает). Поэтому код интеграции с prototype сильно отличается от того, что был приведен тут выше. Однако интерфейс в итоге остается полностью прозрачным.
  3. Скрипты регрессивного тестирования для всей этой кухни.
Back to top
View user's profile Send private message Send e-mail
SviMik
Заглянувший



Joined: 13 Jun 2006
Posts: 17
Карма: -2
   поощрить/наказать

Location: Tallinn, Эстония

PostPosted: Wed Aug 08, 2007 11:30 am (спустя 10 часов 30 минут)
   Post subject:
Reply with quote

>Попробуйте локализовать ошибку еще больше. В таком виде сложно что-то сказать.
Это максимум что у меня вышло. Дальше уже некуда.
Но баг же есть. Функции предельно простые, из примеров. Что ещё мне сделать?

Загрузил туда новую версию. Баг не исчез.
Back to top
View user's profile Send private message
SviMik
Заглянувший



Joined: 13 Jun 2006
Posts: 17
Карма: -2
   поощрить/наказать

Location: Tallinn, Эстония

PostPosted: Fri Aug 10, 2007 12:46 pm (спустя 2 дня 1 час 16 минут)
   Post subject:
Reply with quote

Видимо ответ будет получен через месяц... Я конечно не тороплю, но как бы 2 дня уже жду, надеясь что свершится чудо и автор найдёт баг. Ну или хотя бы отпишется что ищет :) Или хотя бы просто что-то ответит, а то чувствую себя в игноре :(
Back to top
View user's profile Send private message
Юрий Насретдинов
Модератор



Joined: 13 Mar 2003
Posts: 8642
Карма: 197
   поощрить/наказать

Location: 007 495

PostPosted: Fri Aug 10, 2007 7:54 pm (спустя 7 часов 7 минут; написано за 15 секунд)
   Post subject:
Reply with quote

SviMik
У меня Ваш пример не выдаёт ошибок.
Back to top
View user's profile Send private message Send e-mail
SviMik
Заглянувший



Joined: 13 Jun 2006
Posts: 17
Карма: -2
   поощрить/наказать

Location: Tallinn, Эстония

PostPosted: Sat Aug 11, 2007 1:06 am (спустя 5 часов 11 минут)
   Post subject:
Reply with quote

Юpий Насрeтдинов В Мозилле 1.7.3 и Фаерфоксе у меня переодически выдаёт.
Back to top
View user's profile Send private message
Юрий Насретдинов
Модератор



Joined: 13 Mar 2003
Posts: 8642
Карма: 197
   поощрить/наказать

Location: 007 495

PostPosted: Sat Aug 11, 2007 5:35 pm (спустя 16 часов 29 минут; написано за 19 секунд)
   Post subject:
Reply with quote

SviMik
Протестировал ещё на одном компьютере -- не выдаёт Ваш пример ошибок, и всё тут. Исправлять нечего.
Back to top
View user's profile Send private message Send e-mail
SviMik
Заглянувший



Joined: 13 Jun 2006
Posts: 17
Карма: -2
   поощрить/наказать

Location: Tallinn, Эстония

PostPosted: Sun Aug 12, 2007 1:53 am (спустя 8 часов 18 минут)
   Post subject:
Reply with quote

Ну а что мне тогда сделать с этим?
Скрин, 15кб: svimik.servehttp.com/abug.png
Иногда действительно бывает, что у одного человека что-то глючит, а у другово глюк повторить не удаётся хоть тресни. Поэтому спорить не буду. Пусть проверит ещё кто-нидь.
Back to top
View user's profile Send private message
SviMik
Заглянувший



Joined: 13 Jun 2006
Posts: 17
Карма: -2
   поощрить/наказать

Location: Tallinn, Эстония

PostPosted: Mon Aug 20, 2007 6:13 pm (спустя 8 дней 16 часов 19 минут; написано за 43 секунды)
   Post subject:
Reply with quote

Дмитрий Котеров wrote:
Юрик wrote:
В Opera 7.23 таки не работает iframe - открывает форму в новом окошке
Работы над исправлением ведутся.
Ждём...
Back to top
View user's profile Send private message
_dmitry_
Guest





Карма: 388
   поощрить/наказать


PostPosted: Thu Sep 13, 2007 12:04 pm (спустя 23 дня 17 часов 50 минут; написано за 7 минут 22 секунды)
   Post subject:
Reply with quote

Здравствуйте, уважаемые участники проекта.
Использую JsHttpRequest для заполнения динамических списков <select>. В backend делаю запрос к БД и формирую следующую строчку
Code (php): скопировать код в буфер обмена
$text.="$id\t$desc\n";
Собственно все для того, чтобы в js-файле ее потом распарсить и создать <option> к моему <select>
Code (JavaScript): скопировать код в буфер обмена
var arr = tableText.split('\n');
for(var i in arr){
        val = arr[i].split('\t');
        select.options[select.options.length]=
        new Option(val[1], val[0], false, false);
}
Все вроде бы неплохо, даже если закрыть глаза, что гоняется большая текстовая переменная. Но возникла проблема. $text при пересылке квотируется и я получаю в браузере в выпадающем списке текст вроде "NONFAT MILK SOL&amp;VIT A"... Не подскажите как в JavaScript можно html сущности перевести в текст? Или это моя ошибка где-то, а JsHttpRequest должен сам переводить при выдаче результата?

Большое спасибо за понимание.
Back to top
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 412
   поощрить/наказать


PostPosted: Thu Sep 13, 2007 7:01 pm (спустя 6 часов 57 минут; написано за 40 секунд)
   Post subject:
Reply with quote

Я не понимаю, зачем вы так делаете? Зачем что-то парсить, когда можно прямо в $_RESULT передать массив option-ов, в а JS их просто насоздавать, ничего не парся?
Back to top
View user's profile Send private message Send e-mail
chebur
Заглянувший



Joined: 04 Sep 2006
Posts: 6
Карма: 2
   поощрить/наказать


PostPosted: Thu Oct 18, 2007 1:06 pm (спустя 1 месяц 4 дня 18 часов 5 минут; написано за 5 минут 20 секунд)
   Post subject: Re: JsHttpRequest 5: Кроссбраузерный AJAX + закачка файлов.
Reply with quote

Дмитрий Котеров wrote:
Вышла JsHttpRequest 5.x.
WebSVN: dklab.ru/wsvn/lib/JsHttpRequest/tags/
А checkout репозитория websvn чем-нибудь отличается от checkout svn ??
У меня выпадает ошибка в tortoiseSVN когда я пытаюсь сделать чекаут.

Если websvn не предназначен для checkout может быть вы подскажете ссылку на svn?
Back to top
View user's profile Send private message
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 412
   поощрить/наказать


PostPosted: Tue Oct 30, 2007 1:44 pm (спустя 12 дней 37 минут; написано за 14 секунд)
   Post subject:
Reply with quote

Отличается:

svn://dklab.ru/lib/JsHttpRequest/tags/
Back to top
View user's profile Send private message Send e-mail
Витал
Guest





Карма: 388
   поощрить/наказать


PostPosted: Sat Nov 03, 2007 4:15 pm (спустя 4 дня 2 часа 31 минуту; написано за 3 минуты 26 секунд)
   Post subject:
Reply with quote

Юрий НасретдиновДмитрий КотеровЯ не понимаю, зачем вы так делаете? Зачем что-то парсить, когда можно прямо в $_RESULT передать массив option-ов, в а JS их просто насоздавать, ничего не парся?
:)))))))))))))
Ну тут видно уже личное дело каждого, хотя это только усложняет дело...

Дим, подскажите, плз, вот я сделал код:
Code (JavaScript): скопировать код в буфер обмена
function getBrandsList( module ) {
       
    var req = new JsHttpRequest();
    iCountryID = document.getElementById('country').value;
    oBrandsSelect = document.getElementById('brand');
    removeOptions( document.auto_form.brand.options );
    req.onreadystatechange = function() {
        if (req.readyState == 4) {
                       
                            if ( req.responseJS.arBrands && iCountryID){
                                    arBrands = req.responseJS.arBrands;
                                    iCount = req.responseJS.count;
                                   
                                    OPTION = new Option( 'любая', 0 );
                                    document.auto_form.brand.options[0] = OPTION;
                                    for ( i = 0; i < iCount; i++ ){
                                           
                                            OPTION = new Option( arBrands[i]['name'], arBrands[i]['id'] );
                                            document.auto_form.brand.options[i+1] = OPTION;
                                    }
                                    if ( module == 'catalogue' ){
                                            //oBrandsSelect.innerHTML += '<select name="brand" onchange="getModelsList();" id="brand_value">'+ sOptions + '</select>';
                                    }
                        } else {
                                        removeOptions( document.auto_form.brand.options );
                                        OPTION = new Option( 'любая', 0 );

                        }
                        getModelsList();
            //HelpLogin.focus();
            // Write debug information too (output become responseText).
                   
        }
    }
   
    // Prepare request object (automatically choose GET or POST).
    req.open(null, 'end.php', true);
    // Send data to backend.
    req.send( { action: 'getBrandsInCountry',
                            id: iCountryID } );
}
Вроде везде работает, но на компе моей теще (стоит винда ХР, ИЕ 6), но в отличие от моей версии ИЕ 6, на компе тещи все-таки возникает ошиПко :(
В этом месте - if ( req.responseJS.arBrands && iCountryID) - ИЕ пишет, что массив arBrands "is null" :( Я очень переживаю... :(
А еще большое вам спасибо! Я по вашей книге начинал учить пхп :) Очень благодарен!
Back to top
reneo
Заглянувший



Joined: 10 Nov 2007
Posts: 1
Карма: 0
   поощрить/наказать

Location: Копейск

PostPosted: Thu Dec 13, 2007 5:08 pm (спустя 1 месяц 10 дней 53 минуты; написано за 3 минуты 42 секунды)
   Post subject:
Reply with quote

Скажите пожалуйста, если юзать аякс не посредством функций "Prototype"-а а посредством библиотеки "JsHttpRequest", что я от этого потеряю? так как даже при подключении модуля совместимости, все равно приходится подключать эту самую библиотеку..
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic All times are GMT + 3 Hours
Goto page Previous  1, 2, 3, 4  Next
Page 2 of 4    Email to a Friend.
Post a reply
Username
Subject
Господа спамеры и оптимизаторы!

Вы можете даже и не пытаться вставлять в текст поста ссылки - они все равно автоматически удаляются (вернее, тэги <a> заменяются на тэги <u>).

Но если не поверите и все же попытаетесь - как только увидите, что все безрезультатно, удалите свой пост, пожалуйста. Модераторы тоже люди, нехорошо, если они погрязнут в тоннах спама.
     

Disable BBCode in this post
Disable Smilies in this post
    HTML is OFF
BBCode is ON
Smilies are ON
You cannot post new topics in this forum. You can reply to topics in this forum. You cannot edit your posts in this forum. You cannot delete your posts in this forum. You cannot vote in polls in this forum. You cannot attach files in this forum. You can download files in this forum.
XML