2 Stimmen

AJAX JSON + PHP JSON-Fehler

Ich habe eine jQuery AJAX-Code, der JSON-Typ Daten aus php-Datei empfängt. Ohne dataType: "json" ist alles in Ordnung. Aber ich brauche Daten vom Typ JSON. Der empfangene Text ist ein gültiger JSON-Code

{"ok": "false", "answer": "Alle Felder müssen ausgefüllt werden"}

Aber wenn ich dataType verwende, erhalte ich einen Fehler

Objekt "parsererror" SyntaxFehler

Hier ist der JS-Code:

    $.ajax({
        url : "testing/regtest.php",
        type : "POST",
        dataType: "json",
        data : {
            mail : $('#mail_field').val(),
            username : $('#username_field').val(),
            password : $('#password_field').val(),
            password_2 : $('#rep_password_field').val()
        },
        success : function(data) {
            console.log(data.ok);
        },
        error: function(a,b,c) { console.log(a,b,c); }
    });

Danke für jede Hilfe!
Aktualisierung: Hier ist der serverseitige php-Code: http://jsfiddle.net/VfQbz/1/
Update 2: Es funktioniert im IE9, aber nicht in Chrome

3voto

Sammy S. Punkte 498

Ich bin mir nicht ganz sicher, ob das funktioniert, aber IMHO liegt das Problem in der lausigen JSON-Kodierungsfunktion von PHP. Versuchen Sie es:

if (check_post() === true) {
    $password = $_POST['password'];
    $password2 = $_POST['password_2'];
    $username = $_POST['username'];
    $mail = $_POST['mail'];
    if (valid_data($password, $password2, $username, $mail) === true){
        $answer = json_encode(array("ok" => "true", "answer" =>     $service_messages["account_registered"]));
        echo "'".$answer."'"; // Note the additional single quotes
    }
}

Durch Graben in der jQuery-Quelle fand ich den Fehler in der Antwort-Parsing auftreten. Hoffe, es funktioniert.

1voto

321X Punkte 3014

Setzt Ihr PHP-Code den richtigen Header?

header('Content-type: application/json');

1voto

Eric Punkte 4964

Nur um alles abzudecken: Sind Sie sicher, dass Ihr jQuery auf dem neuesten Stand ist und nicht in irgendeiner Weise verändert wurde?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X