PHP从不同于index.PHP的PHP文件回声到index.PHP


PHP echo to index.php from a different php file than index.php

我在index.php中有一个表单,它将一个JSON对象发送到"getProducts.php",我想以某种方式将数据返回到index.php,要么返回到屏幕,要么登录到控制台。但我尝试了这两种技术,没有任何东西被记录或显示在屏幕上。我运行了PHP调试器,在这两种情况下,它都会回显实际填充的值,但没有任何东西进入屏幕或控制台。为什么我的getProducts.php中的回显不能出现在屏幕或控制台上?

index.php:

<form   role="form" 
            id="search-filter-form" 
            action="scripts/back_end/getProducts.php" 
            method="post">
    <div class="row">
            <div class="col-sm-9">
                <h1 id="search-filter-heading" 
                    class="heading form-group">FILTER YOUR SEARCH.
                </h1>
            </div>
            <div class="col-sm-6 col-md-3">
                <div id="search-button" class="form-group">
                    <input  id="search-input" 
                            placeholder="SEARCH KEY WORD">
                    </input>
                    <div id="search-icon"></div>
                </div>
            </div>
        </div>
        <div class="row">
            <?
                echo RegionSelectTemplate::display();
                echo TownSelectTemplate::display();
                echo SuburbSelectTemplate::display();
                echo CategorySelectTemplate::display();
            ?>
        </div>
        <div class="row">
            <div class="col-sm-12">
                <input  type="submit" 
                        value="FIND ME SOME VEGAN GOODIES" 
                        id="go-button" 
                        class="with-border clickable">
                </input>
            </div>
        </div>
    </form>

处理表单提交事件:

$("#search-filter-form").submit(function(event) {
    /* stop form from submitting normally */
    event.preventDefault();
    /* get some values from elements on the page: */
    var $form = $( this ),
        url = $form.attr( 'action' );
    /* Send the data using post */
    var posting = $.post( url, { region: s.regionSelect._selectedAreaName, town: s.townSelect._selectedAreaName } );
    /* Alerts the results */
    posting.done(function( data ) {
    console.log('post success');
    });
});

这里是getProducts.hp:

<?
function debug_to_console( $data ) {
    if ( is_array( $data ) )
        $output = "<script>console.log( 'Debug Objects: " . implode( ',', $data) . "' );</script>";
    else
        $output = "<script>console.log( 'Debug Objects: " . $data . "' );</script>";
    echo $output;
}
    if( $_POST["region"] || $_POST["town"] ) {
        debug_to_console($_POST);
        exit();
    }
?>

不确定是否值得一提的是,顶部的index.php代码是一个模板。代码中的Index.php如下所示:

<!DOCTYPE html>
<?
    header("X-Frame-Options: DENY");
    header("Content-Security-Policy: frame-ancestors 'none'", false);
    require 'scripts/back_end/views/template_engine.php';
    require 'scripts/back_end/views/view.php';
?>
<html lang="en-US">
    <head>
        <?
            echo HeadTemplate::display();
        ?>
    </head>
    <body>
        <?
            echo NavbarTemplate::display();
            echo LandingPageTemplate::display();
            echo SearchFilterPageTemplate::display();
            echo SearchResultsPageTemplate::display();
            echo TvrScriptsTemplate::display();
        ?>
    </body>
</html>

但是index.php表单的最终html输出是因为它位于问题

的顶部

您需要对posting.done()回调函数中的响应执行您想要的操作。这将把它添加到DOM中,DOM将呈现HTML并执行脚本。

post.done(function(data) {
    $("#somediv").html(data);
});

听起来你需要在已经使用的jquery中加入一些ajax

$("#search-filter-form").submit(function(event) {
    /* stop form from submitting normally */
    event.preventDefault();
    /* get some values from elements on the page: */
    var $form = $( this ),
        url = $form.attr( 'action' );
    $.ajax({
        type: "POST",
        url: "getProducts.php?",
        data: "region="+ s.regionSelect._selectedAreaName+
        "&town="+ s.townSelect._selectedAreaName,       
        success: function(data) {
            alert(data);
            //or
            window.console&&console.log(data);
        }
    });
});