загрузка страницы в php в div, java-скрипт не работает - PullRequest
3 голосов
/ 21 июля 2010

я использую ajax для загрузки страниц в div, страница загружается нормально, но я не могу запустить php и javascript на этой загруженной странице

на сервере, я загружаю страницу следующим образом

file_get_contents('../' . $PAGE_URL);

в браузере я устанавливаю содержимое div с помощью

eval("var r = " + response.responseText);

и задаю innerHTML для этого div с информацией извлечения, но когда я получаю новую внутреннюю страницу, скрипт php или java неработает

это должно быть так?

Ответы [ 3 ]

2 голосов
/ 21 июля 2010

Ну, php не будет работать, я думаю, потому что то, как вы обращаетесь с ним, это просто текст. Я бы предложил использовать что-то вроде include('../' . $PAGE_URL);, и это должно проанализировать php. Проблема javascript, вероятно, связана с тем, что вы загружаете теги <html> <body> <head> в div. Я не уверен, что произойдет, когда вы это сделаете, но это не должно работать должным образом. Попробуйте использовать тег типа <frame>.

1 голос
/ 21 июля 2010

Для того, чтобы ваш javascript был выполнен правильно, вы должны подождать, пока браузер завершит загрузку страницы.

Это событие называется onload(). Ваш код должен быть выполнен в этом событии.

0 голосов
/ 21 июля 2010
<?php
    $file = false;

    if(isset($_GET['load'] && is_string($_GET['load'])) {
        $tmp = stripclashes($_GET['load']);
        $tmp = str_replace(".","",$tmp);

        $file = $tmp . '.php';
    }

    if($file != false && file_exists($file) && is_readable($file)) {
        require_once $file;
    }

?>

вызывается через file.php? Load = test

Это обрабатывает файл PHP, и, пока вы выплевываете HTML из файла, просто

target = document.getElementById('page');    
target.innerHTML = response.responseText;

Теперь,Я вполне уверен, что некоторые из них небезопасны, у вас может быть белый список допустимых требований.В идеале он должен искать файлы в определенном каталоге.Честно говоря, я не слишком уверен в том, чтобы напрямую сбросить текст responseText обратно в DIV, с точки зрения безопасности, поскольку он созрел для XSS.Но это конец дня, и я ничего не нашел по этому поводу.Имейте в виду, что без какой-либо проверки вы могли бы направить пользователя на сторонний сайт с помощью file_get_contents, что было бы очень плохо.Вы можете проверить в PHP запрос file_get_contents, что ... ну, очень, очень плохо.Например, попробуйте

<?php
     echo file_get_contents("http://www.google.com");
?>

Но я боюсь, я должен спросить здесь, почему вы делаете это таким образом?Это кажется очень окольным способом получения гиперссылки.

Это AJAX для AJAXs?

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