【发布时间】:2012-11-27 08:02:40
【问题描述】:
在视图中:
return render_to_response("main.html", RequestContext(request, {'form':form, "result":result}))
在模板中我有这个 jquery 函数:
$('#submitButton').click(function(e) {
e.preventDefault();
var dataPosted = $("#mainSubmit").serialize();
$.ajax({
type: "POST",
data: dataPosted,
url: 'main/',
success: function(data) {
$("#mainDiv").html(data);
$(".response").html({{ result }});
$(".response").show();
}
});
});
});
<div id="mainDiv" class="part">
<form id="mainSubmit" action="main/" method="POST" name="submitForm">
{% csrf_token %}
{{ form.non_field_errors }}
{{ form.as_p }}
<input type="submit" value="Submit" id="submitButton"/>
<div class="response" style="display: none;"></div>
</form>
</div>
但似乎无法将数据分配给这样的响应 div(似乎未定义数据)。所以我不知道将数据发送到模板的方式是什么。如果我在视图中使用Httpresponse(result),那么我不能刷新我的表单,只有我可以在响应中显示我从视图发送的 div 数据。那么方法是什么?
编辑: 这是我的看法。之前,我没有为条件 if form.is_valid(): 设置 else ,但我在这里使用,因为我认为如果我不这样做,可能会导致一些可能性。我不知道什么是最好的方法。
def mainFunc(request):
if request.is_ajax():
if request.method == 'POST':
form = mainForm(request.POST)
if form.is_valid():
// process the form
result = "successful"
to_json = {'form':form, 'result':result}
return HttpResponse(json.dumps(to_json), mimetype='application/json')
else:
result = ""
to_json = {'form':form, 'result':result}
return HttpResponse(json.dumps(to_json), mimetype='application/json')
else:
form = mainForm()
return render_to_response('main.html', RequestContext(request, {'form':form}))
else:
return render_to_response("ajax.html", {}, context_instance=RequestContext(request))
【问题讨论】:
-
您必须提供更多详细信息。第一个代码示例来自views.py,但它看起来是呈现整个页面的视图。响应表单的 POST 操作的方法在哪里?那是一样的吗?此外,动作是'main/'。这不是绝对的 URL。你不是以'main/main/main/' URL结尾吗?表单提交是否有任何数据返回? (提示:使用萤火虫或类似的东西)
-
那不行:
$(".response").html({{ result }}); -
我编辑了我的问题。谢谢:)
标签: django jquery django-views