2012-04-11 15 views
0

Ich benutze jQuery mit Django in Server-Seite. Was ich versuche ist, etwas Text vom Benutzer durch das Formular zu bekommen und gleichzeitig den Text im Canvas-Bereich wie about.me und flavors.me anzuzeigen. Dann zieht der Benutzer den Text im Canvas-Bereich an die gewünschte Position und wenn er auf den nächsten Button klickt, müssen die Daten in der Datenbank gespeichert und auf die Homepage umgeleitet werden. Alles funktioniert einwandfrei (die Daten werden in der Datenbank gespeichert), außer wenn ich auf die Schaltfläche klicke, die ich window.location auf "http://127.0.0.1:8000". setze Aber ich komme nicht auf diese Seite, wenn ich auf die Schaltfläche klicke.window.location ist nicht woking

ich einige Fehler in Django-Server bekommen:

error: [Errno 32] Broken pipe 
---------------------------------------- 
Exception happened during processing of request from ('127.0.0.1', 51161) 
Traceback (most recent call last): 
File "/usr/lib/python2.7/SocketServer.py", line 284, in _handle_request_noblock 

Hier ist mein html: https://gist.github.com/2359541

Django views.py:

von cover.models importieren CoverModel von django .http import HttpResponseRedirect

def coverview(request): 
    if request.is_ajax(): 
      t = request.POST.get('top') 
      l = request.POST.get('left') 
      n = request.POST.get('name') 
      h = request.POST.get('headline') 
      try: 
        g = CoverModel.objects.get(user=request.user) 
      except CoverModel.DoesNotExist: 
        co = CoverModel(top=t, left=l, name=n, headline=h) 
        co.user = request.user 
        co.save() 
      else: 
        g.top = t 
        g.left = l 
        g.name = n 
        g.headline = h 
        g.save() 
      return HttpResponseRedirect("/") 

urls.py:

url(r'^cover/check/$', 'cover.views.coverview'), 
url(r'^cover/$', login_required(direct_to_template), {'template': 'cover.html'}), 

Kann mir jemand helfen?

Danke!

+0

Wahrscheinlich ein Problem auf der Serverseite, d.h. mit Ihrem Python-Code. –

+0

Sie sollten die HttpResponseRedirect ('/') von der Python-Seite entfernen. Keine Notwendigkeit, dort auch umzuleiten. Gib einfach HttpResponse ('loaded') oder etwas ähnliches zurück. – Jordan

+0

@ Jordan Ich habe es geändert, aber immer den gleichen Fehler "Broken Pipe". Zwischen Danke! – rnk

Antwort

0

Es gibt wirklich nicht genügend Informationen in Ihrer Frage, dies zu richtig zu diagnostizieren, aber man kann versuchen, diese:

Es ist immer eine schlechte Idee zu hart Code eines Domain-Name in Ihrer JS. Was passiert, wenn Sie das zum Beispiel in die Produktion bringen? Wenn Sie den Benutzer zur Startseite senden möchten (vorausgesetzt, der Standort ist auf http://127.0.0.1:8000/ eingestellt), legen Sie den Standort einfach auf / fest. Dadurch wird sichergestellt, dass es unabhängig von der IP-Adresse, dem Domänennamen oder dem Port immer zum Site-Root wechselt.

+0

Ich habe meine Frage aktualisiert. Bitte schau es dir an. Vielen Dank! – rnk

0

Ein Teil des Problems besteht darin, dass Sie versuchen, Daten zu posten und dann die Seite sofort mit window.location zu verlassen. Sie sollten die window.location nur ändern, wenn Sie die Antwort von $ .post() zurückbekommen.

$.post("check/", { top: t, left: l, name: n, headline: h}, function(data) { 
    window.location.href = "/"; 
}); 

Beachten Sie auch, dass ich die hartcodierte URL entfernt habe. Benutze einen Verwandten hier, wie Chris sagte.

Wenn es immer noch nicht funktioniert, müssen Sie in den Zeilen oben auf Javascript-Fehler überprüfen. Verwenden Sie Firebug, Chrome Dev Tools, Opera Dragonfly, etwas. Überprüfen Sie, ob Ihr POST tatsächlich ausgeführt wird, und veröffentlichen Sie weitere Daten dazu hier.

+0

Funktioniert immer noch nicht. Ich bin sicher, Post funktioniert, weil ich die Daten auf der Serverseite bekomme. Ich habe meine Frage aktualisiert. Überprüfen Sie bitte das. – rnk

+0

Schauen Sie in Ihrem Debugger. Siehst du Javascript-Fehler? – Jordan

+0

Ich werde auf die gleiche Seite umleiten. Daher kann ich die Fehler im Chrome-Browser nicht sehen. – rnk

Verwandte Themen