2016-05-03 10 views
0

Ich habe eine jQuery-Funktion, die einen AJAX-Aufruf an eine PHP-Datei sendet, um den ausgewählten Wert eines Dropdown-Menüs zu überprüfen und diesen Wert aus der DB zurückzugeben.AJAX-Aufruf mit JSON-Datentyp gibt undefined zurück

jQuery (document).ready(function() { 
    $("#country").change(function() { 
     country = $("#country").val(); 
     $.ajax({ 
      type: "POST", 
      url: "script.php", 
      dataType: "json", 
      data: $("#address").serialize(), 
      success: function(data) { 
       alert(data.code); 
      }, 
     }); 
     return false; 
    }); 
}); 

Problem entweder mit:

alert(data[0].code) 

PHP-Code:

$country = $_POST["country"]; 
$stmt = $db -> prepare("SELECT * FROM country WHERE name = :country"); 
$stmt -> execute(array(":country" => $country)); 
$rows = $stmt -> fetchAll(PDO::FETCH_ASSOC); 

foreach ($rows as $row) 
{ 
    $code = $row["code"]; 
} 

echo json_encode($code); 

Problem entweder mit:

echo json_encode(array(":code" => $code)); 

Der PHP-Skript funktioniert gut, wie es true zurück Wert. Auch wenn ich die Mozilla-Konsole überprüfe, sendet der AJAX-Aufruf die Anfrage korrekt an das PHP-Skript und es erhält auch einen Rückgabewert, aber ich bekomme immer noch undefined mit Alarm.

+0

Sie müssen 'parseJSON' wie' var gewöhnungs obj = $ .parseJSON (Daten); Warnung (obj.code) '. –

+0

Ich habe deine Lösung zu einer Community-Wiki-Antwort gemacht. –

Antwort

0

Muss so etwas wie dieses:

$country = $_POST["country"]; 
$stmt = $db -> prepare ("SELECT * FROM country WHERE name = :country"); 
$stmt -> execute (array (":country" => $country)); 
$rows = $stmt -> fetchAll (PDO::FETCH_ASSOC); 
$code = array(); 
foreach ($rows as $row) 
{ 
    $code[] = $row["code"]; 
} 
echo json_encode ($code); 

oder einfach echo json_encode ($rows);, wie Sie verwenden PDO :: FETCH_ASSOC

1

ändern Diese

foreach ($rows as $row) 
{ 
    $code = $row["code"]; 
} 

Um

$code = array(); 
foreach ($rows as $row) 
{ 
    $code[] = $row["code"]; 
} 
echo json_encode($code); 
+0

Immer noch dasselbe Ergebnis! – Soheyl

+0

'console.log (Daten); 'und sag mir, was es zurückgibt ... @Lynxis –

+0

Zurück: Array [" 0 "]! @Manjeet Barnala – Soheyl

0

Lösung von OP.

Das Problem gelöst mit:

echo json_encode (array ("code" => $code)); 

ich einen Fehler mit hatte ":" vor dem "Code":

echo json_encode (array (":code" => $code)); 
Verwandte Themen