通过Ajax包含php文件并显示在页面上

时间:2018-10-18 10:04:19

标签: php ajax

我想知道是否有任何方法可以在AJAX调用之后包含一个php文件,并将包含的文件显示在我的页面中作为响应。

例如,这是一个ajax调用:

$('#id').change(function(){
    var selected = $(this).val();
    $.ajax({
        url:  "ajax.php",
        type: "POST",
        data: "select="+selected,
        success: function (data) {
            $("#here").html(data);
        }
    });
});

这是我在php中尝试过的方法,但是我的html上没有显示结果:

if(isset($_POST['select'])){
    $post= $_POST['select'];

    $class = ClassName::find_by_id($post);

    $sql = " sp_SQLStoredproc {$class->id} ";
    if($class->hasRows($sql)){
        include("include.php");
    }

}

有什么方法可以在HTML中显示包含的文件吗?

我试图将我的成功响应从Ajax $("#here").html(data);更改为$("#here").load(data);,但它返回了整个页面。

任何建议都会有所帮助。

更新:include.php文件中包含一个长长的html代码和一些类方法

PS。请不要提及脚本是不安全的,我知道这只是示例脚本。

提前谢谢

2 个答案:

答案 0 :(得分:1)

为了获取成功数据,您需要返回要包含的数据。请记住,phphtml中将不起作用,除非它是操作调用。您可以为此安装php文件,因为它也支持html

还需要记住,在将成功数据设置为元素之前,最好控制值并确保获取正确的数据。

if(isset($_POST['select'])){
    $post= $_POST['select'];

    $class = ClassName::find_by_id($post);

    $sql = " sp_SQLStoredproc {$class->id} ";
    if($class->hasRows($sql)){
        return include("include.php");
    }

}

答案 1 :(得分:0)

您可以在缓冲区中设置所有“ include.php” html,然后需要将内容回显到控制台。

<?php
    if(isset($_POST['select'])){
        $post= $_POST['select'];

        $class = ClassName::find_by_id($post);

        $sql = " sp_SQLStoredproc {$class->id} ";
        if($class->hasRows($sql)){
            ob_starts();
            include("include.php");
            $include = ob_get_contents();
            echo $include;
        }
    }
?>