Ajax, возвращающий код php / javascript - PullRequest
0 голосов
/ 27 сентября 2010

Я играл с AJAX.

Если я сделаю

echo "helllo"

в файле PHP, он будет работать нормально.

Однако, если я сделаю что-то вроде

echo "<script language=Javascript> alert('hi');</script>";

в файле PHP, alert() не появляется.

Кто-нибудь знает, если я делаю что-то не так?

пример:

в моем html-файле у меня есть

<div id='something'> </div>

, и я хочу, чтобы текст ответа из php-файла был помещен выше:

if (req.status==200) {
     document.getElementById('something').innerHTML=req.responseText;
}

, если я изменил его на:

if (req.status==200) {
     document.getElementById('something').innerHTML="<?php echo 'hi';?>";
}

работает нормально, текст ответа будет ---> привет
, но если я сделаю echo "\"<?php echo 'hi';?>\""; в моем php-файле, текст ответа будет ""

я надеюсь, что я ясно объяснил

Ответы [ 3 ]

1 голос
/ 28 сентября 2010

используйте $. Load () , и скрипт будет оценен.

$("#something").load("request.php");

Может быть, jQuery там также использует eval (), так что это не более безопасно, нодо тех пор, пока load () работает только в том же домене, у вас должен быть контроль над тем, что будет оцениваться.

Однако его проще использовать, потому что вам не нужно анализировать фрагмент для сценариев.самостоятельно:)

0 голосов
/ 27 сентября 2010

Вы должны создать скрипт-тег с возвращенными данными;

var script = document.createElement('script');
stript.innerHTML = req.responseText;
document.getElementsByTagName('head')[0].appendChild(script);
0 голосов
/ 27 сентября 2010

другой подход: использование eval

var result = ajaxResponseText;// "alert('hi')"; in your case
eval(result);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...