2012-04-11 38 views
0

我在服務器端使用jQuery與Django。我想要做的是從用戶那裏通過表單獲取一些文本,並同時在canvas區域顯示文本,如about.me和flavors.me。然後,用戶將畫布區域中的文本拖動到所需的位置,當它們單擊下一個按鈕時,數據必須存儲在數據庫中並重定向到主頁。一切工作完美(數據存儲在數據庫中),除非當我點擊我設置window.location的按鈕到"http://127.0.0.1:8000".但是當我單擊按鈕時我沒有進入該頁面。window.location不是woking

我越來越Django的服務器的一些錯誤:

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 

這裏是我的html: https://gist.github.com/2359541

Django的views.py:

從cover.models匯入Django的CoverModel .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'}), 

任何人都可以幫助我嗎?

謝謝!

+0

可能是服務器端的問題,即使用您的Python代碼。 – 2012-04-11 13:25:59

+0

您應該從python端刪除HttpResponseRedirect('/')。無需在那裏重定向。只需返回HttpResponse('loaded')或類似的東西。 – Jordan 2012-04-11 13:54:10

+0

@Jordan我改變了它,但得到相同的錯誤「斷管」。謝謝! – rnk 2012-04-11 13:58:28

回答

0

有真的沒有你的問題正確診斷此足夠的信息,但你可以試試這個:

總是一個壞主意,硬編碼域名在你的JS。例如,當你把它用於生產時會發生什麼?如果您想將用戶發送到主頁(推測來自設置爲http://127.0.0.1:8000/的位置),則將該位置簡單地設置爲/。這將確保它將始終轉到站點根目錄,無論IP地址,域名或端口如何。

+0

我更新了我的問題。請檢查一下。謝謝! – rnk 2012-04-11 16:52:30

0

問題的一部分是,您嘗試發佈數據,然後通過使用window.location立即離開頁面。只要您從$ .post()獲得響應,您就應該只更改window.location。

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

另請注意,我刪除了硬編碼的URL。像克里斯說的那樣,在這裏使用相對的一個。

如果它仍然不起作用,您需要檢查上面的行中的Javascript錯誤。使用Firebug,Chrome Dev Tools,Opera Dragonfly等等。檢查以確保您的POST實際上正在通過,並在此處發佈更多關於該回的數據。

+0

仍然無法正常工作。我確定後期工作,因爲我在服務器端獲取數據。我更新了我的問題。請檢查一下。 – rnk 2012-04-11 13:52:22

+0

看你的調試器。你看到任何Javascript錯誤? – Jordan 2012-04-11 13:53:32

+0

我正在重定向到同一頁面。所以我在Chrome瀏覽器中看不到錯誤。 – rnk 2012-04-11 14:01:49