Почему я не могу написать код Javascript внутри текста ответа Ajax? - PullRequest
1 голос
/ 13 июля 2011

reponseText должно быть так на PHP

echo "<script>alert('test')</script>";

Но ничего не случилось. Как мне вернуть код Javascript?

Ответы [ 3 ]

1 голос
/ 13 июля 2011

Вызывающий абонент должен решить, что с ним делать (в зависимости от того, какой тип данных возвращается). В этом случае, если ваш абонент не готов выполнить это, то с этим ничего не произойдет. В зависимости от того, что настоящий код хочет сделать здесь, существует ряд различных возможностей для обработки возвращаемого результата от вызова ajax.

Он может быть отформатирован как JSONP, поэтому он вызывает функцию в коде вашей главной страницы обработать возвращенные данные. Вы можете вернуть полный JS (без тегов) и выполнить eval () на нем после страницы хоста (как правило, не считается разумной идеей из-за некоторых угроз безопасности), или его можно просто добавить на текущую страницу и позволить браузеру просто парсит все, что вы туда поместили.

Обычно Ajax-вызов возвращает чистые данные, и код вашей страницы хоста обрабатывает эти данные и содержит код для решения, что с ним делать. Это самый безопасный механизм, потому что нет ничего, что могло бы перехватить соединение, чтобы внедрить код на вашу страницу (все, что он может сделать, это изменить данные).
0 голосов
/ 13 июля 2011

вот простой пример.Но не включайте теги <script> для этого жесткого

$.ajax({
    type: "GET",
    dataType: "text",
    url: "jsLoader.php",
    success: function(data){
        eval(data);
    }
});
0 голосов
/ 13 июля 2011

Вы вернули его как текст. Теперь все, что вам нужно сделать, это как-то вставить этот текст на страницу:

document.body.innerHTML += response;

Там много чего происходит и много предположений, но это самый простой способ сделать это.

(Ну, это не совсем так. Самый простой способ сделать это - просто вернуть JavaScript, а затем eval это.)

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