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

https + IE = "JavaScript code generated by backend is invalid" (arkady)
Author Message
arkady
Заглянувший



Joined: 26 Jul 2007
Posts: 3
Карма: 0
   поощрить/наказать


PostPosted: Thu Jul 26, 2007 10:23 am ()
   Post subject: https + IE = "JavaScript code generated by backend is invalid"
Reply with quote

Здравствуйте!
Огромное спасибо автору за библиотеку JsHTTPRequest. Simply the best!

К сожалению, я слабо разбираюсь в ява-скрипте, не могу осилить одну трудность.
На клиенте:
Code (any language): скопировать код в буфер обмена
На сервере:
Code (any language): скопировать код в буфер обмена
$JsHttpRequest = new JsHttpRequest('windows-1251');
$db = new DB;
$db->connect(DBSERVER, DATABASE, DBLOGIN, DBPASS);
$_RESULT = $db->get_data("
select ClientID, Surname, Name1, Name2
from Client
where Surname like '{$_REQUEST['Surname']}' or Name1 = '{$_REQUEST['Name1']}' or Name2 = '{$_REQUEST['Name2']}'
");
(реальный код нагружен больше, я выбросил специфику)
Сервер - Apache 2.2.3 (windows) на локале с поддержкой SSL
В результате:
На FF работает железно по HTTP и HTTPS
На IE 6 работает железно по HTTP. А по HTTPS иногда подвисает, иногда работает (при одних и тех же данных!). Если подвисает, то иногда ругается ошибкой "JavaScript code generated by backend is invalid".
Ошибка выбрасывается в JsHttpRequest.js:
Code (any language): скопировать код в буфер обмена
try {
  // Prepare generator function & catch syntax errors on this stage.
  eval('JsHttpRequest._tmp = function(id) { var d = ' + req.responseText + '; d.id = id; JsHttpRequest.dataReady(d); }');
} catch (e) {
  // Note that FF 2.0 does not throw any error from onreadystatechange handler.
  return req._error('js_invalid', req.responseText)
}
При этом в косоли дебаггера IE данные:
req.responseText==""
id==<длинное целое>

Можно ли как-нибудь победить это явление?
Back to top
View user's profile Send private message
Дмитрий Котеров
Администратор



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


PostPosted: Thu Aug 02, 2007 9:04 pm (спустя 7 дней 10 часов 40 минут; написано за 1 минуту 20 секунд)
   Post subject:
Reply with quote

arkady wrote:
JavaScript code generated by backend is invalid
Вот в этом месте бы и посмотреть этот код, который она считает "invalid". Этот текст пишется с новой строки после "JavaScript code generated by backend is invalid" в тексте ошибки. Там пустота?

Если пустота, то проблема на сервере, скорее всего. Попробуйте посмотреть access_log и error_log.
Back to top
View user's profile Send private message Send e-mail
Дмитрий Котеров
Администратор



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


PostPosted: Thu Aug 02, 2007 9:05 pm (спустя 1 минуту 1 секунду; написано за 29 секунд)
   Post subject:
Reply with quote

arkady wrote:
иногда подвисает
Что значит "подвисает"? Просто никогда не возвращает ответа, а браузер при этом работает? Или же зависает весь браузер и всесь JS?
Back to top
View user's profile Send private message Send e-mail
arkady
Заглянувший



Joined: 26 Jul 2007
Posts: 3
Карма: 0
   поощрить/наказать


PostPosted: Fri Aug 03, 2007 10:49 am (спустя 13 часов 44 минуты)
   Post subject:
Reply with quote

Дмитрий, спасибо за ответ.
Проблема вроде бы решилась, по крайней мере пару дней все идет без ошибок.
Я поменял в вызове req.open() null на GET (с нулом запрос делался POST'ом)
Вам для информации (может пригодится):
Quote:
Вот в этом месте бы и посмотреть этот код, который она считает "invalid". Этот текст пишется с новой строки после "JavaScript code generated by backend is invalid" в тексте ошибки. Там пустота?
Если пустота, то проблема на сервере, скорее всего. Попробуйте посмотреть access_log и error_log.
Пустота. В error.log :
[client 127.0.0.1] (OS 10060)Попытка установить соединение была безуспешной, т.к. от другого компьютера за требуемое время не получен нужный отклик, или было разорвано уже установленное соединение из-за неверного отклика уже подключенного компьютера. : SSL input filter read failed.
Мне это, к сожалению, ни о чем не говорит.
access.log пишет нормальный запрос.
Quote:
Что значит "подвисает"? Просто никогда не возвращает ответа, а браузер при этом работает? Или же зависает весь браузер и всесь JS?
Сорри, плохо выразился. Не наступает req.readyState == 4. Интерфейс IE при этом откликается, но загружать ничего не желает, даже если переходишь на другой сайт: ползет индикатор загрузки - и ничего.

Еще раз спасибо. Библиотека сэкономила мне кучу времени.
Back to top
View user's profile Send private message
Дмитрий Котеров
Администратор



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


PostPosted: Sat Aug 04, 2007 2:35 pm (спустя 1 день 3 часа 45 минут; написано за 34 секунды)
   Post subject:
Reply with quote

Очень похоже на какую-то проблему с сервером, проявляющуюся только при POST + ssl. Вряд ли библиотека тут при чем, она и правда ответа не получает.
Back to top
View user's profile Send private message Send e-mail
Енот
Заглянувший



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


PostPosted: Thu Sep 04, 2008 4:50 am (спустя 1 год 30 дней 14 часов 15 минут; написано за 57 секунд)
   Post subject:
Reply with quote

Прикрутил к проекту JsHttpRequest 5.x, отправляю такой запрос
Code (JavaScript): скопировать код в буфер обмена
        JsHttpRequest.query(
            'index2.php?option=com_jshttprequest&Itemid=40&no_html=1', // backend
            {
                // pass a text value
                'str': value 
            },
            // Function is called when an answer arrives.
            function(result, errors) {
                // Write errors to the debug div.
                document.getElementById(id).innerHTML = errors;
                // Write the answer.
                if (result) {
                    document.getElementById(id).innerHTML =
                        'MD5("' + result["str"] + '") = ' + result["md5"];
                }
            },
            false  // do not disable caching
        );
Backend:
Code (php): скопировать код в буфер обмена
<?php

defined (www.php.net/defined)( '_VALID_MOS' ) or die (www.php.net/die)( 'Direct Access to this location is not allowed.' );

global (www.php.net/global)  $mosConfig_absolute_path;
require_once $mosConfig_absolute_path."/scripts/JsHttpRequest/config.php";
require_once $mosConfig_absolute_path."/scripts/JsHttpRequest/JsHttpRequest.php";

$JsHttpRequest =& new JsHttpRequest("windows-1251");


$str = $_REQUEST['str'];

$GLOBALS['_RESULT'] = array (www.php.net/array)(
      "str"   => 'file ' . $str,
      "md5"   => md5 (www.php.net/md5)($str),
);

// Everything we print will go to 'errors' parameter.
echo (www.php.net/echo) "<pre>";
?>
<b>QUERY_STRING:</b> <?=$_SERVER['QUERY_STRING'] . "\n"?>
<b>Uploaded files:</b> <?=$str?>
<?php
echo (www.php.net/echo) "</pre>";
// This includes a PHP fatal error! It will go to the debug stream,
// frontend may intercept this and act a reaction.
if ($_REQUEST['str'] == 'error') {
  error_demonstration__make_a_mistake_calling_undefined_function();
}
 
?>
В итоге, в IE Ошибка:

JavaScript code generated by backend is invalid!
<b>QUERY_STRING:</b> option=com_jshttprequest&Itemid=40&no_html=1
<b>Uploaded files:</b> string

В FF3 Firebug выдает:
unexpected end of XML entity
localhost2/scripts/JsHttpRequest/JsHttpRequest.js
Line 384

JsHttpRequest.js
Code (php): скопировать код в буфер обмена
382 try{
383 eval (www.php.net/eval)("JsHttpRequest._tmp = function(id) { var d = "+req.responseText+"; d.id = id; JsHttpRequest.dataReady(d); }");
384 }
385 catch(e){
386 return req._error("js_invalid",req.responseText);
387 }
Подскажите, где я ошибся?
Back to top
View user's profile Send private message
Юрий Насретдинов
Модератор



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

Location: 007 495

PostPosted: Sat Sep 06, 2008 12:55 am (спустя 1 день 20 часов 4 минуты; написано за 49 секунд)
   Post subject:
Reply with quote

Енот
Вероятно, все-таки срабатывает этот код, до подключения библиотеки:
Енот wrote:
defined( '_VALID_MOS' ) or die( 'Direct Access to this location is not allowed.' );
?

Или, Вы выводите что-то до подключения backend, а потом не очищаете ob-буфер.
Back to top
View user's profile Send private message Send e-mail
Guest






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


PostPosted: Sat Sep 06, 2008 4:17 am (спустя 3 часа 22 минуты; написано за 1 минуту 34 секунды)
   Post subject:
Reply with quote

Проблему решил. Ага, мысль правильная, я хотел подключить AJAX компонентом в Joomle.
Подключил на прямую, все стало нормально. Спс за ответ.
Back to top
Енот
Заглянувший



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


PostPosted: Sat Sep 06, 2008 4:19 am (спустя 1 минуту 39 секунд; написано за 1 минуту 47 секунд)
   Post subject:
Reply with quote

Anonymous wrote:
Проблему решил. Ага, мысль правильная, я хотел подключить AJAX компонентом в Joomle.
Подключил на прямую, все стало нормально. Спс за ответ.
Это был я =)

Вопрос решен, тему можно закрыть.
Back to top
View user's profile Send private message
Guest






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


PostPosted: Sun Dec 07, 2008 3:10 am (спустя 3 месяца 22 часа 50 минут; написано за 3 минуты 53 секунды)
   Post subject:
Reply with quote

столкнулся с похожей поблемой...
помогите примерчиком привинчивания JShttpRequest к joomla 1.5

передаю данные нормально а вот отдать назад нормально не выходит:
Code (any language): скопировать код в буфер обмена
[ Exception... "'Error: JsHttpRequest: JavaScript code generated by backend is invalid!'
when calling method: [nsIDOMEventListener::handleEvent]" 
nsresult: "0x8057001c (NS_ERROR_XPC_JS_THREW_JS_OBJECT)" 
location: "JS frame :: chrome://firebug/content/spy.js :: onHTTPSpyReadyStateChange :: line 491"data: no]
отдаю примерно вот так:
Code (php): скопировать код в буфер обмена
<?php
defined (www.php.net/defined)( '_JEXEC' ) or die (www.php.net/die)( 'Restricted access' );
require_once "/htdocs/joomla/components/com_reviews/lib/JsHttpRequest/JsHttpRequest.php";
$JsHttpRequest =& new JsHttpRequest("utf-8");
$REQ = array (www.php.net/array)("ERR"=>0, "RES"=>'zzzzzzzzz');
//echo '{ERR:"1.1.2",RES:"1.12"}';
$_RESULT = array (www.php.net/array)( 'REQ'=>$REQ );
?>
при этом в фаерфоксе ajax запрос всетаки вертается в фронтэнд и выглядит вменяемо
но у POST запроса код ошибки 500 :(
Back to top
Игорь Патриот
Guest





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


PostPosted: Tue Dec 23, 2008 10:18 am (спустя 16 дней 7 часов 8 минут; написано за 3 минуты 3 секунды)
   Post subject:
Reply with quote

К сожалению у меня тоже возникла ошибка "JavaScript code generated by backend is invalid"!, при которой браузер не получал ответа от сервера, причем и только в IE 6.0 Обьяснить эту ошибку я ничем не мог, потому как остальные браузеры работали исправно. Попробовал заменить выбор метода с автоматического 'null' на GET - ура, заработало!
Back to top
Guest






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


PostPosted: Sat Oct 31, 2009 2:06 pm (спустя 10 месяцев 8 дней 3 часа 47 минут; написано за 2 минуты 11 секунд)
   Post subject:
Reply with quote

Ошибка: JsHttpRequest: JavaScript code generated by backend is invalid!
.....
весь ХТМЛ-код страницы
.....
when calling method: [nsIDOMEventListener::handleEvent]" nsresult: "0x8057001c (NS_ERROR_XPC_JS_THREW_JS_OBJECT)" location: "<unknown>" data: no]

Источник: MY ... IP/templates/admin/js/en/JsHttpRequest.js Строка: 165


Строка: 165:
159. if(!window.Error){
160. throw msg;
161. }else{
162. if((new Error(1,"test")).description=="test"){
163. throw new Error(1,msg);
164. }else{
165. throw new Error(msg);
166. }
167. }
168. };

Подскажите, где копать??
Спс.
Back to top
ДмитрийМ
Guest





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


PostPosted: Tue Feb 01, 2011 5:24 pm (спустя 1 год 3 месяца 1 день 3 часа 18 минут; написано за 55 секунд)
   Post subject: throw new Error(msg);
Reply with quote

Гость Не решил проблему? С тем же самым столкнулся dmitman@gmail.com
Back to top
Shavonne
Guest





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


PostPosted: Tue Mar 24, 2020 5:26 pm (спустя 9 лет 1 месяц 23 дня 1 минуту)
   Post subject: https + IE = &quot;JavaScript code generated by backend is invalid&quot; :: JsHttpRequest :: JavaScript :: Форум dkLab и Denwer
Reply with quote

my page ... www.steuergo.de (www.steuergo.de/blog/bitcoin-und-steuern-wie-werden-kryptowaehrungen-versteuert/)
Back to top
Display posts from previous:   
Post new topic   Reply to topic All times are GMT + 3 Hours
Page 1 of 1    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