jQuery:加载一个PHP代码片段

时间:2011-07-13 13:39:33

标签: php jquery load

我使用此代码将其他页面中的内容加载到主页面中:

$('#access a').click(function(event) {
    event.preventDefault();
    var url = $(this).attr('href');
$('#content').fadeOut(500, function() {
    $('#content').load(url, function() {
        $('#content').fadeIn(500);
        }); 
    });
});

我希望能够在单击#mybutton时将<?php /*my PHP code */ ?>的输出加载到同一个容器中。

我该怎么做?

我怀疑它必须是非常基本的东西,但我不确定它是如何完成的。我很感激你的专业建议!

更新:这是我正在尝试运行的一些PHP代码:

<?php printf( __( 'Search Results for: %s', 'twentyten' ), '<span>' . get_search_query() . '</span>' ); ?>
<?php if ( have_posts() ) : ?>

                <?php
                /* Run the loop for the search to output the results.
                 * If you want to overload this in a child theme then include a file
                 * called loop-search.php and that will be used instead.
                 */
                 get_template_part( 'loop', 'search' );
                ?>
<?php else : ?>
                <div id="post-0" class="post no-results not-found">
                    <h2 class="entry-title"><?php _e( 'Nothing Found', 'twentyten' ); ?></h2>
                    <div class="entry-content">
                        <p><?php _e( 'Sorry, but nothing matched your search criteria. Please try again with some different keywords.', 'twentyten' ); ?></p>
                    </div><!-- .entry-content -->
                </div><!-- #post-0 -->
<?php endif; ?>

5 个答案:

答案 0 :(得分:1)

$('#mybutton').click(function()
{
    $('#content').load('place_where_your_php_code_is_at.php'); 
});

jQuery执行DOM和AJAX,它不执行PHP,因此您必须调用脚本返回HTML输出并将其显示在#content框中。

或者,你可以做一个hack-around(真的不安全的东西,因为任何人都可以从控制台更改你的javascript) 您可以拥有一个具有eval function的php文件并返回执行,然后您可以动态调用它。像这样,

$.get('php_executor.php', code='echo "hello world";', function (val) {
$('#content').html(val);
});

你的php将包含<? eval($_GET['code']); ?>

行中的内容

我刚回答你的问题,我不建议使用它,因为任何人都可以注入各种不安全的代码。但是,如果您计划仅使用它,那么它可能值得一试。 祝你好运!

答案 1 :(得分:1)

PHP将在服务器端执行,因此如果要加载PHP代码段,则需要请求服务器将PHP代码段的输出提供给您。为此,您需要使用AJAX。查看this

您可以使用jQuery .load.ajax.post来执行此操作

答案 2 :(得分:1)

您提出问题的方式意味着您还没有完全理解网页的客户端 - 服务器性质,以及代码部分运行的顺序。

您的问题的解决方案是一种称为Ajax的技术。使用JQuery非常简单。

简而言之,它允许您从Javascript代码中重新调用新的PHP调用(或任何其他服务器端代码),而无需重新加载整个页面;来自PHP调用的响应将提供给您的Javascript,而不是简单地作为新页面加载到浏览器窗口中。然后Javascript代码可以自由使用它,但它喜欢;通常这意味着将其作为新的内容块插入现有页面 - 这基本上就是你所要求的。

还有更多的东西;我可以在这里简短解答一下:我建议你调查一下。谷歌的“Jquery PHP Ajax教程”或类似的,我相信你会得到一些有用的提示。

[编辑]作为请求,一个例子:

在您的Javascript代码中,您可以使用以下内容:

<!DOCTYPE html>
<html>
<head>
<script src="jquery.js"></script>
<script>
$(document).ready(function() {
    $('#my_button').click(function() {
        $.ajax({
          url: "ajaxtest.php",
          success: function(response_data){
            $('#my_container_div').html(response_data);
         }
        });
    });
});
</script>
</head>
<body>

<button id='my_button'>Click me</button>
<br /><br />
<div id='my_container_div'>
</div>

</body>
</html>

显然,你需要一个id为'my_button'的按钮和一个id为'my_container_div'的元素在页面中。这个JQuery代码会向按钮添加一个click事件,这样当你点击它时,就会运行Ajax代码。

Ajax代码调用单独的PHP程序,当该程序返回一些内容时(无论该内容是什么),它将显示在容器div中。

PHP程序完全独立于生成原始页面的主要PHP程序,并且无法访问其任何变量(当然除了会话数据)。你可以让这个PHP代码返回你喜欢的任何东西。通常它会是一段HTML代码或一大块文本。它通常采用JSON代码的形式,这是一个可以转换为Javascript变量的数组。这允许您在PHP和Javascript环境之间共享数据。

正如我所说,这是一个非常大的话题。它还有很多,但你需要自己调查一下。我希望这有助于你开始。

NB:我已经测试了上面的代码。有用。你显然也需要一个能产生一些输出的PHP程序。

答案 3 :(得分:1)

如果我理解正确,可能比你想象的更简单。

首先,使用隐藏的<div>包装PHP输出:

<div id="searchResults" style="display: none;">
<?php printf( __( 'Search Results for: %s', 'twentyten' ), '<span>' . get_search_query() . '</span>' ); ?>
.....
.....
.....
<?php endif; ?>
</div>

然后只需点击按钮将这些内容复制到另一个容器:

$('#mybutton').click(function(event) {
    event.preventDefault();
    $('#content').fadeOut(500, function() {
        $('#content').html($('#searchResults').html());
        $('#content').fadeIn(500);
    });
});

如果我没有正确理解,请更好地解释,我会尝试找到其他方法。

答案 4 :(得分:0)

$('#myButton').click(function(e){
    $('#content').fadeOut(500, function() {
        $('#content').load('urlOfYourPHP', function() {
            $('#content').fadeIn(500);
        }); 
    });


}

编辑:

//这应该把你的php返回到#content中,但是每次都不会重新运行php,它将与页面的其余部分一起呈现/

$('#myButton').click(function(e){
    $('#content').html('<?php /*my PHP code */ ?>');
});