2012-04-11 9 views
0

私はサーバ側でDjangoでjQueryを使用しています。私がしようとしているのは、フォームからユーザーのテキストを取得し、about.meやflavors.meのようなキャンバス領域にテキストを同時に表示することです。次に、キャンバス領域のテキストを目的の位置にドラッグし、次のボタンをクリックすると、データをデータベースに保存してホームページにリダイレクトする必要があります。私はwindow.locationを"http://127.0.0.1:8000".に設定したボタンをクリックする以外は、すべてが完璧に機能しています(データはデータベースに保存されています)。しかし、ボタンをクリックするとそのページには到達しません。window.locationがウォーキングしていません

私は、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からはジャンゴから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コードの問題です。 –

+0

HttpResponseRedirect( '/')をPython側から削除する必要があります。リダイレクトする必要はありません。ちょうどHttpResponse( '読み込まれた')またはそのようなものを返します。 – Jordan

+0

@Jordan私はそれを変更しましたが、同じエラー "Broken Pipe"を取得しました。ありがとう! – rnk

答えて

0

は本当にこれを適切に診断するあなたの質問に十分な情報はありませんが、あなたはこれを試すことができます。

それは常にハードコードあなたのJSでのドメイン名に悪い考えです。これを生産に使うとどうなりますか?ユーザーをホームページ(http://127.0.0.1:8000/に設定されていると仮定)に送信する場合は、場所を単に/に設定します。これにより、IPアドレス、ドメイン名、ポートに関係なく常にサイトルートに移動します。

+0

私の質問が更新されました。チェックアウトしてください。ありがとう! – rnk

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

+0

デバッガを見てください。 Javascriptのエラーはありますか? – Jordan

+0

私は同じページにリダイレクトしています。だから私はChromeブラウザでエラーを見ることができません。 – rnk

関連する問題