在意见中:
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))