Ich habe überall nach einer Lösung gesucht, aber ich kann nichts finden, was funktioniert. Ich versuche, eine Reihe von Daten aus der Datenbank zu erhalten und dann über AJAX autocomplete Eingabefelder in einem Formular. Um dies zu tun, habe ich beschlossen, json zu verwenden, denn warum nicht, richtig? Alternativ habe ich darüber nachgedacht, einfach eine abgegrenzte Zeichenkette zurückzusenden und diese dann zu tokenisieren, was im Nachhinein betrachtet viel einfacher gewesen wäre und mir Kopfschmerzen erspart hätte... Da ich mich für json entschieden habe, sollte ich wohl dabei bleiben und herausfinden, was falsch gelaufen ist! Wenn die Funktion get_member_function() ausgeführt wird, erscheint eine Fehlermeldung in einem Alert-Dialog und lautet "[object Object]". Ich habe dies auch mit der GET-Anforderung und der Einstellung des ContentType auf "application/json; charset=utf-8" versucht. Leider ohne Erfolg. Kann mir bitte jemand sagen, was ich falsch mache? Mach's gut, Piotr.
Meine javascript/jQuery Funktion ist wie folgt:
function get_member_info()
{
var url = "contents/php_scripts/admin_scripts.php";
var id = $( "select[ name = member ] option:selected" ).val();
$.ajax(
{
type: "POST",
dataType: "json",
url: url,
data: { get_member: id },
success: function( response )
{
$( "input[ name = type ]:eq( " + response.type + " )" ).attr( "checked", "checked" );
$( "input[ name = name ]" ).val( response.name );
$( "input[ name = fname ]" ).val( response.fname );
$( "input[ name = lname ]" ).val( response.lname );
$( "input[ name = email ]" ).val( response.email );
$( "input[ name = phone ]" ).val( response.phone );
$( "input[ name = website ]" ).val( response.website );
$( "#admin_member_img" ).attr( "src", "images/member_images/" + response.image );
},
error: function( error )
{
alert( error );
}
} );
}
und der entsprechende Code in "contents/php_scripts/admin_scripts.php" lautet wie folgt:
if( isset( $_POST[ "get_member" ] ) )
{
$member_id = $_POST[ "get_member" ];
$query = "select * from members where id = '$member_id'";
$result = mysql_query( $query );
$row = mysql_fetch_array( $result );
$type = $row[ "type" ];
$name = $row[ "name" ];
$fname = $row[ "fname" ];
$lname = $row[ "lname" ];
$email = $row[ "email" ];
$phone = $row[ "phone" ];
$website = $row[ "website" ];
$image = $row[ "image" ];
$json_arr = array( "type" => $type, "name" => $name, "fname" => $fname, "lname" => $lname, "email" => $email, "phone" => $phone, "website" => $website, "image" => $image );
echo json_encode( $json_arr );
}
1 Stimmen
Versuchen Sie alert(JSON.stringify(error)), da es mehr Informationen über den Fehler im Warndialog anzeigen sollte
0 Stimmen
Ich würde vermuten, dass es einen PHP-Fehler gibt, bevor JSON echoed wird. Überprüfen Sie Ihre fetch-Funktion, Sie adressieren die Daten als $row['key'], also sollten Sie stattdessen mysql_fetch_assoc verwenden, glaube ich. Ändern Sie '$row = mysql_fetch_array( $result );' in '$row = mysql_fetch_assoc( $result );' und schauen Sie, ob es funktioniert.
0 Stimmen
Achtung: Wenn es keine vorherige Bereinigung gibt, sind Sie anfällig für SQL-Injection.
0 Stimmen
Hallo, danke, kein PHP-Fehler, dry-ran das Skript ohne js Aufruf es und es war in Ordnung ...
0 Stimmen
@Jack Duluoz, ja, ich habe mehr Informationen... hier ist, was es ausspuckt: {"readyState":4,"responseText":"{\"type\":\"Person\",\"name\":\"\",\"fname\":\"Adriana\",\"lname\":\"Pitea\",\"email\":\"piotr. zywien@gmail.com\",\"phone\":\"1234567\",\"website\":\"\",\"image\":null}","status":200,"statusText":"parsererror"}
0 Stimmen
Haben Sie versucht, Entfernen dataType Option und lassen jQuery das Format erraten? funktioniert bei mir