我正在尝试将在php中生成的html和javascript插入到页面中的div中。
a.php文件:
function get_preset() {
return (bunch of html, javascript);
}
b.php:
<div id="preset_preview">
//<?php echo get_preset(); ?> //this works well, but I need to execute this every time I click a button in jquery.
</div>
我可以使用ajax成功地在jquery和a.php之间进行通信,但是如何将返回的内容从php中的get_preset函数调用放入preset_preview div?
有没有办法做到这一点没有将带有ajax的数据从get_preset函数调用发送到jquery,然后用jquery把它放到preset_preview div中?
每次请来自jquery的请求时,php都能以某种方式独自完成吗?
所以我使用jquery ajax来调用php来执行它:
<div id="preset_preview">
<?php echo get_preset(); ?>
</div>
令我感到困惑的是,php可以成功完成(如上所示),而不首先使用ajax将数据发送到jquery。
答案 0 :(得分:1)
a.php文件
function get_preset() {
return (bunch of html, javascript);
}
echo get_preset();
b.php文件
<button type="button" id="preview">Preview Preset</button>
<div id="preset_preview">
<?php include "a.php"; ?>
</div>
<script>
$('#preview').on('click', function(e) {
e.preventDefault();
$("#preset_preview").load('a.php');
});
</script>
您可以使用几种jQuery AJAX方法。上面的示例使用load()
,它使用get方法包装您的请求(您可以通过调用ajaxSetup()
覆盖其请求方法,无论如何)到a.php的相对URL。
您可以看到a.php echo
ing(字符串?)get_preset()
函数,然后将其放在b.php文件中的<div id="preset_preview">
内。
在这种情况下扩展AJAX的需求是因为PHP只做了像
这样的事情只要您的期望的响应呈现给客户端,它就会消失。在返回响应后,您无法在墙后做任何魔术。换句话说,需要页面加载。
然后AJAX来帮助您创建对应PHP文件的另一个请求。它恢复了一个PHP文件来执行(另一个)请求 - &gt;做一些逻辑 - &gt;然后回来吧。默默地,没有页面加载。
回应评论 - 这可以通过函数调用以某种方式完成而不包括在preset_preview中的实际php文件吗?
一切都是肯定的。只要你服务于呼叫者需要的任何东西。
a.php文件
function get_preset() {
return (bunch of html, javascript);
}
echo get_preset();
a.php只是echo
get_preset()
。
b.php
<button type="button" id="preview">Preview Preset</button>
<div id="preset_preview"></div>
<script>
$('#preview').on('click', function(e) {
e.preventDefault();
$("#preset_preview").load('a.php');
});
</script>
b.php文件只是对a.php文件的请求。只要点击选择器ID为#preview
的按钮,它就会将任何a.php内容加载到#preset_preview
。
您也可以在页面准备好后立即呈现a.php的内容。这与我上面写的第一个片段类似。
<script>
$(document).ready(function() {
$('#preset_preview').load('a.php');
});
$('#preview').on('click', function(e) {
e.preventDefault();
$("#preset_preview").load('a.php');
});
</script>
它只是告诉您应该在b.php页面准备好之后立即加载a.php并且&#34;重新加载&#34;一旦点击按钮就可以了。