2016-04-15 5 views
0

"getProducts.php"にJSONオブジェクトを送るindex.phpのフォームがあり、何とかindex.phpにデータを戻したいのですが画面へのエコーまたはコンソールへのロギングのいずれかによって表示されます。しかし、私は両方の技術を試してきましたが、何も記録されず画面に表示されません。私はPHPのデバッガを実行していて、どちらの場合も、実際に値が設定された値をエコーし​​ますが、画面やコンソールに何も表示されません。なぜ私のgetProducts.phpからエコーが画面やコンソールに表示されないのですか?PHPがindex.phpとは別のPHPファイルからindex.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(); 
    } 
?> 

わからない場合.php code topはテンプレートです。コード内の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> 

しかし、それはあなたには、いくつかのajaxでスローする必要があるような質問

答えて

2

を使用している中であなたがposting.done()コールバック関数で応答してやりたいことする必要があります。これによりDOMに追加され、HTMLがレンダリングされ、スクリプトが実行されます。

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

getProducts.phpのコンテキストでは、データとは何ですか? – BeniaminoBaggins

+1

それはスクリプトがエコーしたすべてです。 – Barmar

0

のトップが聞こえアップしているようにindex.phpフォームの終了HTML出力であります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); 
     } 
    }); 
}); 
+0

彼は既にAJAXを持っていますが、 '$ .post()'は表示されていませんか? – Barmar

関連する問題