在模板我有以下代码。

<script>
    var url="/mypjt/my_timer"

    $.post(url, paramarr,
    function callbackHandler(dict)
    {
        alert('got response back');
        if (dict.flag == 2)
        {
            alert('1');
            $.jGrowl("Data could not be saved");
        }
        else if(dict.ret_status == 1)
        {
            alert('2');
            $.jGrowl("Data saved successfully");
            window.location = "/mypjt/display/" + dict.rid;
        }
    },
    "json"
    );
</script>

在视图我有以下代码,

def my_timer(request):
    dict={}
    try:
        a = timer.objects.get(pk=1)

        dict({'flag':1})
        return HttpResponse(simplejson.dumps(dict), mimetype='application/javascript')

    except:
        dict({'flag':1})
        return HttpResponse(simplejson.dumps(dict), mimetype='application/javascript')

由于我们正在JSON请求和在try块,设定标志后,我们不能直接返回一个页作为

return render_to_response('mypjt/display.html',context_instance=RequestContext(request,{'dict': dict}))

而不是在HTML页面再次发送响应,因为我们成功重定向代码?

另外,如果有一个例外然后只能我们返回JSON请求。

我唯一关心的是,客户端和服务器之间的交互应该是最小的。

有帮助吗?

解决方案

如果你喜欢你的响应说:

  

返回   选择render_to_response( 'MYPJT / display.html',context_instance = RequestContext的(请求,{ '字典':   字典}))

的JavaScript代码将收到您的响应,而不是导航器。我认为你可以做somethink这样的:

<script>
   $(document).ready(function()
   {
      $('#yourForm').submit();
   });
</script>

<form id="yourForm" action="/mypjt/my_timer" method="post">
...
your fields with data, even they are hidden
...
</form>

因此,在Django中你可以做的反应就像你说的:

 def my_timer(request):
     dict={}
     try:
         a=  timer.objects.get(pk=1)

         dict({'flag':1})
         return render_to_response('mypjt/display.html',context_instance=RequestContext(request,{'dict': dict}))
     except:
         dict({'flag':0})
         return render_to_response('mypjt/error_not_found.html',context_instance=RequestContext(request,{'dict': dict}))

或者,也可以这样做你在做但如果查询“timer.objects.get(PK = 1)”失败,例如,你发回一个布尔标志响应。所以,当它是确定您重定向到你喜欢的页面。

我希望这能对你有用!

其他提示

如果我理解正确,你嗅返回代码在JavaScript,然后根据结果重定向。

您可以从Django中做一个重定向,所以我会做,而不必担心返回代码。当你有两个“标志”和“ret_status”,这是你应该在提示重新考虑你的设计。 :)

另外,遮蔽内置在Python代码dict对象应该被避免。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top