2016-07-12 20 views
0

Ich weiß, es gibt viele Antworten zu meinem Problem, aber ich bin neu zu Ajax und Javascript Ich möchte, dass jemand auf das Problem zeigen, dass mein Skript fehlschlägt.
Ich machte Login-Check mit Ajax basierend auf dieser Antwort Check if user logged in on ajax page change. Wenn auf die Schaltfläche zum Senden geklickt wird, überprüft die Funktion, ob der Benutzer angemeldet ist oder nicht. Ich möchte eine Warnung anzeigen, wenn dies nicht der Fall ist, und mit der nächsten Seite fortfahren, wenn dies der Fall ist.
Mein javascript:Ajax für Login-Check funktioniert nicht und senden Formular

$('#bookForm').submit(function(){ 
    $.ajax({ 
      url : '<?=BASE_URL?>user/logged.php', 
      success : function(response){ 
       if (response.logged == true) { 
        return true; 
       }else{ 
        alert('you need to log in'); 
        //e.preventDefault(); 
        return false; 
       } 
      } 
    }); 
}); 

Mein PHP-Skript, das, wenn der Benutzer überprüft protokolliert:

$response = array(); 

if(!isset($_SESSION['userId'])) { 

    $response['logged'] = false; 

}else{ 

    $response['logged'] = true; 

} 

$response = json_encode($response); 

echo($response); 

Ich bin neu zu Javascript/Ajax und ich bin nicht sicher, wo das Problem ist. Die Funktion gibt die Warnung für nicht eingeloggten Benutzer zurück, obwohl der Benutzer angemeldet ist.

+0

Entfernen Sie die 'return json_encode ($ response); ' – RiggsFolly

+0

Und echo braucht keine Klammern so' echo $ response; ' – RiggsFolly

+1

Haben Sie die AJAX-Anfrage/Antwort in den Browser-Entwickler-Tools beobachtet? Haben Sie die jQuery-Bibliothek in das Projekt aufgenommen? Werden Fehler gemeldet? Laufen Sie das auf einem Webserver? Wie stellen Sie 'BASE_URL' ein? –

Antwort

0

Sie müssen diese Option hinzufügen: dataType:'json' in Ihrem Ajax-Anruf.

Und echo json_encode ($ response); ohne irgendeine Rückkehr.

+0

Ich habe den Datentyp hinzugefügt und die Rückkehr entfernt, aber das gleiche Ergebnis - immer falsch –

+0

Haben Sie den angezeigten Wert in PHP durch die JSON-codierte Version geändert? –

0

Nehmen Sie folgende Änderungen an Ihrem Jquery-Code vor.

$('#bookForm').submit(function(event){ 

event.preventdefault(); 

    $.ajax({ 

     url : '<?= BASE_URL ?>user/logged.php', 
     dataType:'json' 
     success : function(response){ 

      if (response.logged == true) { 
       return true; 
      } 
      else{ 
       alert('you need to log in'); 
       //e.preventDefault(); 
       return false; 
      } 
     } 
    }); 
}); 

Entfernen Sie die return json_encode($response); von PHP-Skript

+1

Es ist eine gute Idee, das hinzuzufügen, aber es beantwortet nicht diese eigentliche Frage – RiggsFolly

+0

Warum sollte das OP dies versuchen? Eine *** gute Antwort *** wird immer eine Erklärung haben, was getan wurde und warum es so gemacht wurde, nicht nur für das OP, sondern auch für zukünftige Besucher von SO. –

+0

Das Formular sendet nicht, aber die if-Anweisung ist immer falsch, unabhängig davon, ob der Benutzer angemeldet ist –

Verwandte Themen