我使用此代码将其他页面中的内容加载到主页面中:
$('#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; ?>
答案 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 */ ?>');
});