2016-04-21 8 views
0

Wenn ich das folgende Javascript/PHP ausführen, bekomme ich immer "undefined" bei der Warnung der 'userid' Eigenschaft des JSON-Objekts. Wenn ich jedoch das Json-Objekt stringifiziere, gibt es "[{'userid': '1'}] zurück, was der korrekte Wert ist.Javascript wird nicht auf JSON-Objekt zugreifen

Warum bekomme ich undefiniert, wenn ich versuche, auf den richtigen Namen des JSON zuzugreifen Objekt

Hier ist die ajax ich auf das Objekt zuzugreifen bin mit:

$.ajax({ 
    type: 'POST', 
    url: 'WebPHP/check_login.php', 
    contentType: "application/json; charset=utf-8", 
    data: finalObject, 
    async: false, 
    dataType: 'json', 
    success: function(data) { 
    if (data["result"] === false) { 
     alert("Invalid Email or Password"); 


    } else { 
     var userID = data["result"]; 
     alert(userID["userid"]); 
     var url = "AMessage.html"; 
     alert(JSON.stringify(data["result"])); 

    } 
    } 
}); 

und die pHP, die mit dem db verbindet:

$json = file_get_contents('php://input'); 

$jsondata = json_decode($json); 

$email = $jsondata - > email; 
$password = $jsondata - > password; 

$sql1 = " SELECT user_id as userid 
FROM users 
WHERE email = '$email' 
AND password = '$password'; 
"; 

$result = mysqli_query($Thesisdb, $sql1) or die(mysqli_error($Thesisdb)); 

$rows = $result - > num_rows; 


while ($row = $result - > fetch_assoc()) { 
    $response[] = $row; 
} 

$post_data = array(); 

if ($rows == 1) { 
    $post_data = array('result' => $response); 
} else { 
    $post_data = array('result' => false); 
} 

echo json_encode($post_data); 

mysqli_close($Thesisdb); 
+0

Können Sie Ihre JSON Ergebnis zeigen ?? –

+0

Muss JSON Javascript-Verarbeitung ausgelöst haben, um die Ansicht wie HTML zu ändern? Es hat mich eine Weile am Kopf kratzen lassen, als ich anfing, mit Ajax zu spielen, also könnte das dein Problem sein. Werfen Sie einen Blick auf dieses Projekt: https://github.com/ajax-proofs/proofs –

+0

Sie sollten so etwas während "($ rows = $ result-> num_rows)" tun, um auch weniger zu verarbeiten. –

Antwort

1

Sie nicht die userid zugreifen können pr Opery, weil Ihre userID Variable ein Array enthält - das ist, was die [] Klammern in der JSON Antwort bedeuten: [{'userid':'1'}]. Versuchen Sie, auf diese Weise darauf zuzugreifen: alert(userID[0]["userid"]);.

Besser noch, geben Sie kein Array zurück, da Sie das $rows == 1 sowieso überprüfen.

0

Ja, sagte, wie durch #Jack Sie nicht userid Eigentum zugreifen können, Ihre Json Antwort: [{'userid':'1'}] ist in Array-Form, so müssen Sie für die Syntax gehen: alert(userId[0].userid)

+0

lassen Sie mich wissen, ob Problem gelöst oder nicht –

Verwandte Themen