2016-09-26 4 views
0

Ich arbeite an einer Chrome Erweiterung. Vorerst wird nur überprüft, ob der Benutzer existiert.AJAX erkennen Fehler, aber keine Fehler

Es gibt ein Formular im Plugin Popup. Benutzer füllen dieses Formular mit seinem Benutzernamen und Passwort und es wird an den Server gesendet.

Benutzer wird in Sicht gefunden, alles sieht korrekt aus, aber AJAX gibt Fehler aus irgendeinem Grund zurück.

Dies ist eine Ansicht:

@csrf_exempt 
def api_authentication(request): 
    if request.method == 'POST': 
     login = request.POST.get('login') 
     password = request.POST.get('password') 
     if login and password: 
      username = login 
      if '@' in login: 
       username = mainapp_models.User.objects.get(email=login).username 
       if not username: 
        return JsonResponse({'success':0}) 
      user = authenticate(username=username,password=password) 
      print user # IT's ok, user is found 
      if user: 
       return JsonResponse({'username':user.username, 
            'success':1}) 
    return JsonResponse({'success':0}) 

Dies ist AJAX:

$(document).ready(function() { 

    $('#login-button-id').click(function() { 

     var login = $('#input-email-id').val(); 
     var password = $('#input-password-id').val(); 
     $.ajax({ 
      url: 'http://127.0.0.1:8000/api/authenticate', 
      type: 'POST', 
      data: { 
       'login': login, 
       'password': password 
      }, 
      success: function() { 
       alert('success'); 
      }, 
      error: function() { 
       alert('failure'); 
      } 
     }) 
    }) 
}); 

Und JsonResponse sieht aus wie: {'username': u'milano', 'success': 1}

Wenn ich das Formular ausfüllen und die Daten senden, user ist gefunden, aber 'Fehler' wird alarmiert. Weißt du, was ist das Problem?

EDIT:

Alerts für Andy Antwort:

Seit console.log nicht funktioniert hat, ich es Warnungen geändert:

error: function (jqXHR, textStatus, errorThrown) { 
       alert("JQuery failed: " + textStatus + " with error thrown: " + errorThrown); 
       alert(jqXHR.responseText); 
      } 

Warnung:

enter image description here enter image description here

EDIT2

fand schließlich eine Konsolenprotokolle:

enter image description here

+0

Zum einen ist es ein Tippfehler in Ihr gepouterter Code,'ccess' anstelle von 'success'. Dann, wenn Fehler callabck ausgelöst wird, welcher Fehler erhalten Sie ?! –

+0

Ich habe versucht, Fehler mit dem Code aus der Antwort unten zu überprüfen. Es protokolliert nichts, also änderte ich Log in Alert. Das Ergebnis steht am Ende der Frage. –

+0

Ich habe das Konsolenprotokoll gefunden. Ich musste auf plugin - inspect plugin klicken und alle Warnungen loswerden, da sie inspect window entfernen. Ich habe das Konsolenprotokoll am Ende der Frage hinzugefügt. –

Antwort

0

Ein bisschen mehr Debug würde sehr nützlich sein. Versuchen Sie, Ihre AJAX Fehlerfunktion zu ändern zu berichten ein wenig mehr (nicht viel, aber es hilft):

error: function(jqXHR, textStatus, errorThrown){ 
    console.log("JQuery failed: " + textStatus + " with error thrown: " + errorThrown); 
    console.log(jqXHR); 
    alert('AJAX failed. Check browser console for more info'); 
} 

Auch sind Sie mit Ihrem django App aus dem Entwicklungs-Server (./manage.py runserver)? Tun Sie dies und suchen Sie nach hilfreichen Ausgaben wie Stack-Traces. Könnte

+0

Oh, und post die Browser-Konsole log hier, damit wir es sehen können :) –

+0

Das ist das Problem, es schreibt nichts in die Konsole. Ich überprüfe es in Echtzeit ... weiß nicht, warum ... –

+0

hmmm, nicht eine große Menge Hilfe dort. Was bedeutet die Registerkarte "Entwickler-Netzwerk" in Ihrem Browser als Antwort? –

-1

Ein weiterer Vorschlag im Python-Code als ein Tippfehler oder eine vergessene Import so einfach sein - näher an Ihrem Python sucht versuchen zu ändern:

if user: 

zu

if user is not None: 
Verwandte Themen