如何编写php包含内部div与jquery

时间:2017-08-20 10:50:36

标签: javascript php jquery

我需要在<?php include $this->_ script('admin/test.phtml'); ?>中使用jquery来编写<div>以便它可以正常工作。

我已经研究过并在所有回复中建议使用load("file.php"),但它在我的情况下不起作用,因为它是一个框架,并且由于路由不起作用。

我尝试了这个并且它没有用,它确实包含在脚本中而不是在div中执行:

<script>
  $('.btn-group').on('click', '#btn-edit', function(e) {

    e.preventDefault();

    var id = $(this).attr('data-id');

    $('#myModal').modal({
      backdrop: 'static'
    });
    <?php $_GET['id'] = id;?>
    var php = "<?php include $this->_script('admin/teste.phtml') ?>";

    $('.modal-body').html(php);

  });
</script>

我尝试了这段代码但它也没有用:

<script>
  $('.btn-group').on('click', '#btn-edit', function(e) {

    e.preventDefault();

    var id = $(this).attr('data-id');

    $('#myModal').modal({
      backdrop: 'static'
    });
    <?php $_GET['id'] = id;?>
    var php = "include $this->_script('admin/teste.phtml')";

    $('.modal-body').html('<?php' + php + '?>');
  });
</script>

1 个答案:

答案 0 :(得分:0)

让这样的东西工作的唯一方法是使用jQuery请求页面返回服务器以使服务器再次处理PHP。

但是,正如您所发现的那样,只加载该文件不起作用,因为该文件可能包含不存在的依赖项。

我解决这个问题的方式(我碰巧使用WordPress可能会改变我的答案的具体应用)是这样的:

jQuery的:

jQuery('.btn-group').on('click', '#btn-edit', function(e) {
    jQuery.ajax({
        type: "POST",
        url: "/", //Or whatever the page you want to use to load this.
        data: {"custom_php_action": "my_special_action"},
        tryCount : 0,
        retryLimit : 3,
        success: function(res){
            jQuery(".modal-body").html(res); //Div for my response
        },
        error: function(xhr, textStatus, errorThrown ) {
            if (textStatus == 'timeout') {
                this.tryCount++;
                if (this.tryCount <= this.retryLimit) {
                    //try again
                    jQuery.ajax(this);
                    return;
                }            
            return;
            }
        }
    });
});

PHP(这是用于构建页面的任何内容都会改变的地方):

function my_custom_controller_function() {
    if ( isset($_POST['custom_php_action']) && $_POST['custom_php_action'] == 'my_special_action' ) { //Tests for our AJAX conditions
        //My Code Here -- Make sure whatever response is echoed and not simply returned.
        //If the function returns a value, then echo it here.

        //Example
        echo 'My Response';
        //Example

        //Example 2
        $data = my_function();
        echo $data;
        //Example 2

        exit(); //Stop the rest of the page from loading.
    }
}
add_action( 'wp', 'my_custom_controller_function' ); //Control when AJAX kicks in -- we don't want it firing too soon -- or too late.

这使用一个WordPress动作钩子,在加载WordPress和插件之后,但在处理任何主题文件之前触发(如果我正确理解我的钩子顺序)。根据您的框架,将取决于您如何包含您想要使用的代码。

这就是我解决动态加载信息的方法。希望您可以将此示例中的解决方案拼凑起来,因为我不知道您正在使用的类/对象组合来查找您尝试加载/包含的文档,我不知道详情是什么您正在构建的平台。