window.location不起作用

时间:2012-04-11 13:22:42

标签: javascript jquery python django

我在服务器端使用jQuery和Django。我想要做的是从用户通过表单获取一些文本,同时在画布区域中显示文本,如about.me和flavors.me。然后,用户将画布区域中的文本拖动到所需位置,当他们单击下一个按钮时,数据必须存储在数据库中并重定向到主页。一切都工作得很完美(数据存储在数据库中),除非我点击我将window.location设置为"http://127.0.0.1:8000".的按钮,但是当我点击按钮时,我没有进入该页面。

我在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 来自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'}),

有人可以帮助我吗?

谢谢!

2 个答案:

答案 0 :(得分:0)

你的问题中没有足够的信息来正确诊断这个,但你可以试试这个:

总是总是在JS中对域名进行硬编码是一个坏主意。例如,当您将其用于生产时会发生什么?如果您要将用户发送到主页(假设从设置为http://127.0.0.1:8000/的位置),请将位置简单地设置为/。这将确保无论IP地址,域名或端口如何,它始终会转到站点根目录。

答案 1 :(得分:0)

部分问题在于您尝试发布数据,然后使用window.location立即离开页面。每当从$ .post()获得响应时,您应该只更改window.location。

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

另请注意,我删除了硬编码的网址。在这里使用一个相对的,就像克里斯说的那样。

如果仍然无法正常工作,则需要在上面的行中检查Javascript错误。使用Firebug,Chrome开发工具,Opera Dragonfly等等。检查以确保您的POST确实正在通过,并在此处发布有关该数据的更多数据。