Как вызвать 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/, хотя он и не использовался лично, хорошо работает для той же вещи, так что вы можете посмотреть и на это.