2017-06-13 11 views
3

Ich habe Probleme, AJAX-Daten an PHP zu übergeben. Ich bin erfahren mit PHP, aber neu in JavaScript.AJAX-Daten werden nicht an PHP übergeben

HTML/JavaScript

<input type="text" id="commodity_code"><button id="button"> = </button> 

<script id="source" language="javascript" type="text/javascript"> 

$('#button').click(function() 
{ 
    var commodity_code = $('#commodity_code').val(); 

    $.ajax({          
    url: 'get_code.php', 
    data: "commodity_code: commodity_code", 
    dataType: 'json', 
    success:function(data) { 
     var commodity_desc = data[0]; 
     alert(commodity_desc); 
    } 
    }); 
}); 

</script> 

PHP

$commodity_code = $_POST['commodity_code']; 

$result = mysql_query("SELECT description FROM oc_commodity_codes WHERE code = '$commodity_code'"); 
$array = mysql_fetch_row($result); 
echo json_encode($array); 

Ich weiß, dass das allgemeine AJAX holen und PHP-Code arbeitet, wie ich manuell den $ commodity_code Variable und die Skript Werke erstellen kann fein. Ich denke, mein Problem liegt irgendwo darin, die AJAX-Daten an mein PHP-Skript zu übergeben.

+2

Die von Ihnen verwendete Datenbankbibliothek 'mysql_' ist am Ende ihres Lebens. Es wurde vor einigen Jahren veraltet und in PHP 7 aufgrund von Sicherheitsbedenken vollständig entfernt, einschließlich (aber nicht beschränkt auf) seiner Unfähigkeit, parametrisierte Abfragen zu unterstützen, um einen besseren Schutz vor SQL-Injection-Angriffen zu bieten. In diesem Fall wird nicht unterstützter Code ausgeführt und Ihr System ist sehr anfällig für Injektionsangriffe. Wenn dies neuer Code ist, sollten Sie absolut nicht mysql_ verwenden. Wenn es alter Code ist, sollten Sie a.s.a.p. Sie sollten zu 'mysqli_' oder' PDO' wechseln und parametrisierte Prepared Statements verwenden. – ADyson

+0

Danke, das ist alter Code und wird in mysqli geändert – Syn

Antwort

6

Sie haben vergessen, die method: 'POST' in Ihrem AJAX Call hinzuzufügen. Und Sie haben Probleme mit Ihrem Anruf. Unten:

$.ajax({          
    url: 'get_code.php', 
    method: "POST",       // Change here. 
    data: {commodity_code: commodity_code}, // Change here. 
    dataType: 'json',      
    success:function(data) { 
     var commodity_desc = data[0]; 
     alert(commodity_desc); 
    } 
}); 

Oder es einfach zu machen, verwenden Sie die Kurz Funktion:

$.post('get_code.php', {commodity_code: commodity_code}, function(data) { 
    var commodity_desc = data[0]; 
    alert(commodity_desc); 
}); 
+3

*** Klarstellung: *** Warum ist es eine riskante Maßnahme, 'dataType: 'json'' hinzuzufügen, können wir in seinem php sehen, dass er ein Array zurückgibt 'json_encode'? – guradio

+0

*** Begründung: *** @guradio Persönliche Erfahrung. Ich habe keine gültige Erklärung dafür. Viele Male hat das Entfernen dieser Linie für mich funktioniert. ':)' –

+0

@Jana Was du gerade kommentiert hast macht keinen Sinn. Hast du die Frage und meine Antwort verstanden? Warum hast du das kommentiert? –

0

Fehler in dieser Zeile data: "commodity_code: commodity_code", .. Sie können einfach weiter die commodity_code Variable ..

$.ajax({          
    url: 'get_code.php', 
    method: "POST",       
    data: commodity_code, 
    dataType: 'json',      
    success:function(data) { 
     var commodity_desc = data[0]; 
     alert(commodity_desc); 
    } 
}); 
Verwandte Themen