Как вызвать javascript с Jqueries с использованием javax.script API jdk 1.6 /Rhino Api

У меня есть Javascript, как показано ниже..

    <!DOCTYPE html>
    <html>
    <head>
    <script src="C:\User\Sample\src\jquery-1.8.2.min.js" type="text/javascript"></script>

    <script>
    $(document).ready(function(){
    var sessiontoken;
    var supportCors = $.support.cors;
    var sessiontoken ;
    $.support.cors = true;

    $.ajax({
               type: 'POST',
               url: "https://sessionmanagerg.abc.com/xyz/obj/Session",
               dataType: "json",
               data: {
                   UserId: "TestUser" + "101818",
                   CSK1: "csk1",
                   CustId: "custid1"
               },
        success: function (data) {
                   $.support.cors = supportCors;
                 sessiontoken=data.Token;
        alert(sessiontoken);
               },
               error: function (xhr, textStatus, error) {
                   $.support.cors = supportCors;
                   alert("responseText: " + xhr.responseText);
                   alert("XHR statusText: " + xhr.statusText);
                   alert("textStatus: " + textStatus);
                   alert("error: " + error.message);
               }


    });
    });


    </script>
    </head>
    <body>

    </body>
    </html>

Он генерирует токен сессии после запуска в IE, Chrome(но как-то не в Mozilla). Я хотел бы запустить этот скрипт ScriptEngine из Rhino или Javax.script (jdk 1.6) Api. Я пробовал описанный выше метод с использованием Javax.script, но я получаю сообщение об ошибке, например, символ "$" не распознается, хотя я загрузил файл jquery-1.8.2.min.js с помощью engine.eval("..");

или же

Было бы здорово, если бы я мог сгенерировать совершенно новый код Java, который выполняет те же функции, что и вышеупомянутый javascript. Может ли кто-нибудь дать некоторые советы по этому вопросу?

1 ответ

Одна из проблем при реализации таких сценариев заключается в том, что среда выполнения javax.script или Java/Rhino не содержит структуру DOM браузера (включая конструкцию ajax XMLHttpRequest). Тем не менее, это можно воссоздать с помощью серверных сценариев. Один из них называется env.js, который был представлен здесь и поддерживается здесь. Я использовал этот пакет для реализации js-тестов, которые выполняются в подобном браузеру аналоге, поэтому я могу засвидетельствовать его эффективность для таких скриптов, как ваш.

Я также слышал, что http://phantomjs.org/, хотя он и не использовался лично, хорошо работает для той же вещи, так что вы можете посмотреть и на это.

Другие вопросы по тегам