Посредством запроса Javascript XMLHttpRequest
отвечает дополнительным Javascript, который необходимо добавить на страницу запрашивающей страницы.
Использование eval (), если ответ выглядит примерно так:
alert('This is the js response');
... тогда это прекрасно работает.
Однако возвращаемый текст может выглядеть примерно так:
<script language="javascript">var checkVar='checkVar: value 1';</script>
но наиболее вероятно:
<script src="http://www.somesite.com/setCheckVarValue.js"></script>
... там, где на страницу необходимо загрузить дополнительный JS.
Я гарантировал, что XMLHttpRequest
равен synchronous
, так как я хочу сослаться на checkVar сразу после этого.
Итак:
<script type="text/javascript" src="http://www.mysite.com/addJSToPage.js" />
// at this point, since this is a synchronous call, page processing waits
// until the response is received that needs to include the additional JS
// to load; this, for testing sets the value of checkVar
<script type="text/javascript" >
alert(checkVar);
</script>
В сообщении должно быть указано «checkVar: значение 1».
По другим причинам это не так просто, как установка var checkVar в addJSToPaged.js
, поэтому я не ищу такой рекомендации.
Я использую alert (checkVar) просто как тест, чтобы убедиться, что в ответе было установлено значение через JS.
Полагаю, я мог бы убрать начальный и конечный теги сценария и сохранить способ eval()
. Тем не менее, я хотел бы знать, есть ли какие-либо решения, которые поддерживают то, что я ищу?
Спасибо.
UPDATE
Следуя совету Прашанта, в addJSToPage.js я добавил:
var dynamicElement = document.createElement('div');
Затем в ответе XMLHttpRequest я сделал:
dynamicElement.appendChild = xmlhttp.responseText;
Все еще не видите значение checkVar.