За последние 24 часа нас посетили 16400 программистов и 1677 роботов. Сейчас ищут 883 программиста ...

Javascript CAPICOM <FORM> проблема

Тема в разделе "JavaScript и AJAX", создана пользователем brand34t5q2, 5 авг 2011.

  1. brand34t5q2

    brand34t5q2 Активный пользователь

    С нами с:
    22 июл 2011
    Сообщения:
    5
    Симпатии:
    0
    Есть страничка которая с помощью цифрового сертификата подписывает строку с помощью CAPICOM
    Код (Text):
    1. <html>
    2. <head>
    3. <script LANGUAGE = "JavaScript1.2">
    4. var CAPICOM_STORE_OPEN_READ_ONLY = 0;
    5. var CAPICOM_CURRENT_USER_STORE = 2;;
    6. var CAPICOM_CERTIFICATE_FIND_TIME_VALID = 9;
    7. var CAPICOM_ENCODE_BASE64 = 0;
    8.  
    9. function foo(str_s)
    10. {
    11.    try
    12.    {      
    13.       var SignedData = new ActiveXObject("CAPICOM.SignedData");  
    14.      
    15.       var MyStore = new ActiveXObject("CAPICOM.Store");  
    16.       MyStore.Open(CAPICOM_CURRENT_USER_STORE, "My", CAPICOM_STORE_OPEN_READ_ONLY);
    17.       var Signer = new ActiveXObject("CAPICOM.Signer");  
    18.       //var Signer.Certificate = MyStore.Certificates.Find(CAPICOM_CERTIFICATE_FIND_TIME_VALID).Item(1);
    19.      
    20.      
    21.       SignedData.Content = str_s;
    22.       var szSignature = SignedData.Sign(Signer, true, CAPICOM_ENCODE_BASE64);  
    23.      
    24.       document.getElementById('val').value = szSignature;    
    25.    }
    26.    catch (e)
    27.    {
    28.       alert("An error occurred when attempting to sign the content, the errot was: " + e.description);    
    29.    }  
    30. }
    31. </script>
    32. </head>
    33. <body>
    34. <INPUT  TYPE="button" VALUE="Sign object" onclick="foo('dfgdfgsdf')" />
    35.  
    36. <FORM NAME="input" ACTION="" METHOD="get" onsubmit="foo('dfgdfgsdf')">
    37.  
    38. <INPUT type="text" name="func" value="first"/>
    39. <INPUT type="text" name="val" value=""/>
    40.  
    41. <INPUT  TYPE="SUBMIT" VALUE="Sign object" />
    42. <INPUT  TYPE="BUTTON" NAME="Cancel" VALUE="Cancel" />
    43. </form>
    44. </body>
    45. </html>
    Проблема в том что при нажатии на кнопку Submit "Sign object" формы не происходит передача
    цифровой подписи, т.е. в строке адреса пусто.
    над формой создал еще кнопку не относящуюся к форме но вызывающую ту же функцию для удостоверения правильности работы и все работает отлично , в поле val добавляется текст подписи.
    SignedData.Sign - возвращает текст подписи
    Но в форме проблема, может кто знает в чем проблема?[/code]
     
  2. brand34t5q2

    brand34t5q2 Активный пользователь

    С нами с:
    22 июл 2011
    Сообщения:
    5
    Симпатии:
    0
    И еще если зокоментировать в теле функции все кроме document.getElementById('val').value = szSignature;
    и заменить на document.getElementById('val').value = "qwerty";

    получаю в урл строке file:///C:/new3.html?func=first&val=qwerty
     
  3. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    brand34t5q2
    getElementById - у тебя ж нет нигде никаких id

    <INPUT id='val' type="text" name="val" value=""/>
     
  4. brand34t5q2

    brand34t5q2 Активный пользователь

    С нами с:
    22 июл 2011
    Сообщения:
    5
    Симпатии:
    0
    Все разобрался, вместо get надо было post