2012-04-11 4 views
0

Я использую jQuery с Django на стороне сервера. То, что я пытаюсь сделать, - это получить текст от пользователя через форму и одновременно отобразить текст в области холста, например 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

Джанго 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. Вы должны изменять окно window.location всякий раз, когда вы возвращаете ответ из $ .post().

$.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

Смежные вопросы