这可能是基本的,但我花了两天时间,阅读了无数教程,但我仍然无法让它工作。简单地说,我试图完成一项基本任务,只是为了看看它是否有效。我想向我的捐赠 View 发送一个 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 开发的优秀工具。
这是一个从表单发送 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();
});
然后你的 View 看起来像这样
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()
因为它看起来更直接使用。
关于jquery - Django Ajax Jquery 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10369667/