2016-04-15 13 views
0

Ich habe ein Formular in index.php, das ein JSON-Objekt an "getProducts.php" sendet und ich möchte die Daten zurück zu index.php irgendwie erhalten Entweder durch ein Echo auf dem Bildschirm oder Protokollierung auf der Konsole. Aber ich habe beide Techniken ausprobiert und nichts wird geloggt oder geht auf den Bildschirm. Ich lasse den PHP-Debugger laufen und in beiden Fällen echotiert er tatsächlich aufgefüllte Werte, aber nichts bringt es auf den Bildschirm oder die Konsole. Warum kommt das Echo von meiner getProducts.php nicht auf den Bildschirm oder die Konsole?PHP-Echo zu index.php von einer anderen PHP-Datei als 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> 

das Formular Veranstaltung einreichen Handhabung:

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

Hier ist 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(); 
    } 
?> 

nicht sicher, ob es wert ist, dass der Index zu erwähnen, .php code up top ist eine Vorlage. Index.php in Code wie folgt aussieht:

<!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> 

Aber das Ende HTML-Ausgabe für die index.php Form ist, wie es auf der Oberseite der Frage ist

Antwort

2

Sie müssen tun, was Sie mit der Antwort in der posting.done() Rückruffunktion möchten. Dadurch wird es zum DOM hinzugefügt, wodurch der HTML-Code gerendert und das Skript ausgeführt wird.

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

Im Zusammenhang mit getProducts.php, was sind Daten? – BeniaminoBaggins

+1

Es ist alles, was das Skript wiederholte. – Barmar

0

Klingt wie Sie in einigen ajax zu werfen brauchen in der jquery verwenden Sie bereits

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

Er hat schon AJAX, siehst du '$ .post()'? – Barmar