как вы получаете код JavaScript из responseText? - PullRequest
0 голосов
/ 30 апреля 2011

Как передать код JavaScript в responseText?например, используя этот php:


<?php
echo "&ltscript language='javascript'>
      for(i=0;i&lt3;i++){
          document.write(i);
      }
      &lt/script>
     ";
?>

// output: 012

//and if you pass the php above into this responseText
document.getElementById('someId').innerHTML = xmlHTTPobj.responseText;

// there is no output

Этот код был протестирован без ajax (только php), и он печатается, как и ожидалось, но не при передаче этого php в responseText.

PS: нет опечатки, нет синтаксической ошибки, браузеры: ff4 + firebug 1.7, IE8, chrome 10, opera 10, и я просто хочу знать, как передать код JavaScript в responseText?

edit:

PPS: Не стесняйтесь отвечать на вопрос.Или это означает, что вы не можете передать код JavaScript в responseText?

Ответы [ 2 ]

0 голосов
/ 30 апреля 2011

У меня тоже была эта проблема в моем приложении. Я не совсем уверен, как я решил это, но мне пришлось изменить свою библиотеку JS (очень старый Mootools). (Он начинается со строки 3215 на http://hotblocks.nl/js/mootools_1_11.js.)

Некоторые браузеры выполняют javascript, когда он вставлен в DOM, некоторые выполняют его, когда он получен (вызов Ajax завершен), а некоторые браузеры этого не делают. Таким образом, решение Mootools заключается в регулярном выражении для <script> блоков, отдельной оценке содержимого, замене блоков <script> (оставьте их пустыми) и последующем выполнении обработчика.

Я попытаюсь настроить небольшой тест, чтобы проиллюстрировать это.

редактировать
Я нашел этот пример jsfiddle: http://jsfiddle.net/zalun/NF2jz/

Используется запрос Mootools. HTML: http://jsfiddle.net/js/lib/mootools-1.2.5-core-json-fixed.js

Эта часть делает то, что я сказал выше:

success: function(text){
    var options = this.options, response = this.response;

    response.html = text.stripScripts(function(script){
        response.javascript = script;
    });
    ...
0 голосов
/ 30 апреля 2011

Это непроверенное и прямое указание на мою (возможно, несовершенную) память, но я думаю, что вам потребуется eval () любого javascript для его выполнения таким образом.Тогда вы просто отправили бы обратно javascript без тегов script.Насколько я помню (это обычно обрабатывается фреймворками), именно так мы отправляем структуры данных обратно с сервера на клиент, используя JSON

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...