Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Отправить 'unsigned char[8]' POST запросом


Автор: Alca 4.8.2008, 17:30
(GET - запрос) Есть HTML-страница. В странице ActiveX компонент, 
который читает данные с устройства в буфер (символьный массив):
Код

unsigned char ucText[8] = {235,119,89,85,119,74,189,59};

Необходимо передать содержимое буфера GET запросом на сервер.
Код

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html lang="ru">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
    <title>Идёт аутентификация eToken</title>
    <OBJECT classid=CLSID:12269D2A-947C-4D03-9747-DB699E590501 id=TokenSnapshot></OBJECT>
    <script language="JavaScript" type="text/javascript">
        //-------------------------------------
        //считываем CardId
        function InitToken() {
            var sCardId = TokenSnapshot.sGetCardId(0);
            //...
            document.location.href("http://192.168.1.48/cgi-bin/Test.exe?" + "CardId=" + sCardId.toString());
        }
    </script>
</head>

<body onload="InitToken();">
Идёт аутентификация eToken.....
</body>
</html>

В символьный массив могут входит нечитаемые символы,
т.е. надо передать двоичные данные.
Как правильно поступить? 
Посмотрел как реализовывается передача файлов через РОSТ на РНР. 
тип контента при отправке файла указывается: Content-type: multipart/form-data.
Как передать содержимое буфера?

Автор: InvalidProperty 13.8.2008, 08:07
Для того, чтобы вообще хоть что-то передать GET или POST запросом, нужно эти данные представить в ввиде криптованой строки, однозначной для передачи. Для этого используется функция http://xkr.us/articles/javascript/encode-compare/. Данная функция также переводит "нечитаемые" символы в escape-последовательности.

Автор: Alca 13.8.2008, 11:48
Сделал через POST-запрос:
Код

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<META HTTP-EQUIV=Cache-Control content=no-cache>
<html lang="ru">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
    <title>Идёт аутентификация eToken</title>
    <OBJECT classid=CLSID:12269D2A-947C-4D03-9747-DB699E590501 id=TokenSnapshot></OBJECT>
    <script language="JavaScript" type="text/javascript">
        //-------------------------------------
        //считываем CardId
        function InitTokenByUrl(sUrl) {
            var sTokenId = TokenSnapshot.sGetCardId(0);
            document.frmTokenId.inpHidden.value    = sTokenId;   //alert("InitToken() >>> " + sTokenId);
            document.frmTokenId.inpHiddenUrl.value = sUrl;
        }
    </script>
</head>
<!------------------------------------------------------------------------------------------------------------------------------------->
<body onload="">
    <!-- Begin frmTokenId -->
    <form name="frmTokenId" action="http://serg/cgi-bin/Test/" enctype="multipart/form-data" method="POST" target="_self">
        <input name="inpHidden"    type="hidden" value=""><br />
        <input name="inpHiddenUrl" type="hidden" value=""><br />
    </form>
    <!-- End frmTokenId -->
    <script language="JavaScript" type="text/javascript">
        InitTokenByUrl('');
        document.frmTokenId.submit();
    </script>
</body>
<!------------------------------------------------------------------------------------------------------------------------------------->
</html>

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)