2017-06-14 4 views
0

Ich versuche, einen Eingabewert zu php über Ajax zu senden, aber ich kann nicht scheinen, das richtig zu machen. Ich versuche, eine Datentabelle basierend auf der Benutzereingabe zu erstellen.Sende Variable an PHP über Ajax

Dies ist mein Code:

<input class="form-control" id="id1" type="text" name="id1">

Mein JavaScript-Code:

<script type="text/javascript"> 
$(document).ready(function() { 

var oTable = $('#jsontable').dataTable(); //Initialize the datatable 

    $('#load').on('click',function(){ 
     var user = $(this).attr('id'); 
     if(user != '') 
     { 
     $.ajax({ 
      url: 'response.php?method=fetchdata', 
      data: {url: $('#id1').val()}, 
      dataType: 'json', 
      success: function(s){ 
      console.log(s); 
        oTable.fnClearTable(); 
         for(var i = 0; i < s.length; i++) { 
         oTable.fnAddData([ 
            s[i][0], 
            s[i][1], 
            s[i][2], 
            s[i][3], 
            s[i][4], 
            s[i][5], 
            s[i][6], 
            s[i][7] 
              ]);          
             } // End For 

      }, 
      error: function(e){ 
       console.log(e.responseText); 
      } 
      }); 
     } 
    }); 
}); 
</script> 

Mein PHP-Skript:

<?php 
    $conn = pg_connect(...); 
$id1 = $_POST["id1"]; 
    $result = pg_query_params($conn, 'SELECT * FROM t WHERE id1 = $1 LIMIT 20', array($id1)); 
    while($fetch = pg_fetch_row($result)) { 
     $output[] = array ($fetch[0],$fetch[1],$fetch[2],$fetch[3],$fetch[4],$fetch[5],$fetch[6],$fetch[7]); 
    } 
    echo json_encode($output); 
?> 

ich nicht viel von js wissen aber Mein PHP ist korrekt, ich teste es. Also ich denke, das Problem ist in der JavaScript-Code. Das Problem ist, dass meine Datentabelle basierend auf der Benutzereingabe nicht erstellt wird. Vielen Dank!

+1

Sie haben nicht erwähnt, was genau nicht funktioniert, aber Sie sind nicht eine POST-Anfrage zu senden, müssen Sie haben 'Typ:„post“' Dafür senden Sie Ihre Daten mit dem Namen 'url' nicht' id1'. –

+1

Bitte geben Sie uns weitere Details über "es funktioniert nicht". Übrigens, Sie legen in Ihrem Ajax-Aufruf nicht die "Methode" fest. Standarddaten werden an $ _GET und nicht an $ _POST gesendet. [Siehe die JQuery-Dokumentation] (http://api.jquery.com/jquery.ajax/) – Debflav

+0

... und vermutlich schließen Sie das * jQuery * -Skript seit '$ (document) .ready (' (etc) isn) ein 't technisch JavaScript? Lassen Sie uns die offensichtliche aus dem Weg ... – CD001

Antwort

0

Änderung

data: {url: $('#id1').val()}, 

zu:

type: 'POST', 
data: {id1: $('#id1').val()}, 

aber das Problem könnte größer sein. Sie erhalten möglicherweise nicht die richtigen Daten von PHP. Sie können debuggen die error Option zu Ihrem ajax() Gespräch hinzugefügt wird, wie folgt aus:

$.ajax({ 
    url: 'response.php?method=fetchdata', 
    type: 'POST', 
    data: {id1: $('#id1').val()}, 
    dataType: 'json', 
    success: function(s){ 
    }, 
    error: function (xhr, status, errorThrown) { 
     console.log(xhr.status); 
     console.log(xhr.responseText); 
    } 
}); 

Dann für die Ausgabe Ihres Browsers Konsole überprüfen, dies sollten Sie irgendeine Art von Fehlermeldung geben von PHP kommen.

Meine Annahme ist, dass seit der Verwendung von dataType: 'json' die Ajax-Anfrage JSON-Header zurück erwartet, aber PHP HTML/Text sendet. Um dies zu beheben, fügen Sie die richtigen Header vor Ihrer JSON Echo:

header('Content-Type: application/json'); 
echo json_encode($output); 
+0

immer noch nicht funktioniert.Wie kann ich debbug es in js? – 1pa

+0

aktualisiert meine Antwort – CodeGodie

+0

Das ist die Antwort! Vielen Dank !! :) – 1pa

Verwandte Themen