这个问题并不新鲜,但是我花了很多时间,但是没有修复它。
<form id="test_data_form" action={% url 'insert_test_data' %} method="post">{% csrf_token %}
<input type="submit" value="Insert test data">
<div id="message"></div>
</form>
<script type="text/javascript">
var form = $("test_data_form");
$(document).ready(function() {
form.submit(function() {
$.ajax({
data: form.serialize(),
url: form.attr('action'),
cache: false,
type: form.attr('method'),
dataType:'json',
success: function(response) {
alert("1");
},
error: function() {
alert('Error!');
}
}
);
return false;
}
);
}
);
</script>
views.py
@csrf_exempt
def insert_test_data(request):
print request.is_ajax()
data = {'success': True, 'html': "text"}
return HttpResponse(json.dumps(data), mimetype="application/json")
urls.py
url(r'^hello/insert_test_data/$', insert_test_data, name="insert_test_data"),
首先,我发现成功并未被捕获,因此在调试时我发现django并不认为它是ajax请求并将我重定向到不同的页面:/ insert_test_data。我想留在主页上。
我发现了很多关于该问题的建议(例如缓存:false),但没有一个帮助。我同意,我错过了一些显而易见的东西,但无法确切地知道究竟是什么。 我真的很高兴能得到任何帮助。
答案 0 :(得分:0)
处理表单提交的JavaScript在第一次检查时看起来没问题,但是有一个错误:
var form = $("test_data_form");
如果您使用Firebug或Chrome开发人员工具并在控制台中查询此元素,则您将无法获得任何回复,因为您缺少选择器(标记,ID,类等)。从您的表单标签,我认为您的意思是通过id选择:
var form = $("#test_data_form");