这可能是基本的,但是我花了两天时间,阅读了无数教程,但仍然无法正常工作。为简单起见,我尝试完成一项基本任务只是为了看它能起作用。我想向我的捐赠视图发送一个ajax调用。我看到它成功通过,但是我期望我的模板也将更新为“ TRUE”,但仍为“ FALSE”。我有任何帮助或建议。
我的jQuery …
$.ajax({ type: "POST", url:"/donate/", data: { 'test': 'success', }, success: function(){ alert('test') }, error: function(){ alert("Error"); });
这是我的看法
def donate(request): if request.is_ajax(): test = "TRUE" if request.method == 'POST': form = DonateForm(request.POST) if form.is_valid(): form.save() else: form = DonateForm() test = "FALSE" return render_to_response('donate_form.html', {'form':form,'test':test}, context_instance=RequestContext(request))
我的模板包括这个…
<h1>{{ test }}</h1>
就像在此问题的评论中提到的那样,我没有对返回的数据做任何事情。我将成功电话更新为以下内容,并且成功了
$.ajax({ type: "POST", url:"/donate/", data: { 'zip': zip, }, success: function(data){ results = $(data).find('#results').html() $("#id_date").replaceWith("<span>" + results + "</span >"); }, error: function(){ alert("Error"); },
我认为问题出在传递数据的地方。你用Firebug吗?POST通常来说,这是一个检查是否传递任何东西的出色工具,它也是Web开发的出色工具。
Firebug
POST
这是一个从表单发送Ajax调用的工作示例
$("#form").submit(function(event) { var $form = $(this), $inputs = $form.find("input, select, button, textarea"), serializedData = $form.serialize(); $.ajax({ url: "/donate/", type: "post", data: serializeData, success: function(response) { alert(response) } }) event.preventDefault(); });
然后您的视图可以看起来像这样
if request.is_ajax() or request.method == 'POST': form = DonateForm(data=request.POST) if form.is_valid(): return HttpResponse("Success") else: return HttpResponse("Fail")
顺便说一句,除非您真的需要所有其他功能,否则$.ajax()我建议您$.post()改用它,因为它似乎更直接使用。
$.ajax()
$.post()