PHP与index.php不同的php文件回显到index.php

时间:2016-04-15 22:29:09

标签: php echo

我在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.php:

<?
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输出是问题的顶部

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

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

$("#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);
        }
    });
});