Php将回音内容转换为div

时间:2016-07-09 11:44:30

标签: javascript php jquery html ajax

我正在尝试将在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。

1 个答案:

答案 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只做了像

这样的事情
  1. 获取请求,无论方法是什么(获取,发布,放置等)
  2. 返回回复。通常在您执行与请求值相关的逻辑之后。
  3. 只要您的期望的响应呈现给客户端,它就会消失。在返回响应后,您无法在墙后做任何魔术。换句话说,需要页面加载。

    然后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;一旦点击按钮就可以了。