从Django格式AJAX获取POST数据
我将在Django中从AJAX请求中获取参数,这是我正在做的事情:
<form method="POST">{% csrf_token %}First name: <input type="text">
<input type="submit" value="Register" id="register">
</form>
$(document).ready(function(){ $("#register").live("click", function(e){
$.post("/", {
name: "MY TEXT",
});
});
});
from django.shortcuts import render_to_responsefrom django.template import RequestContext
from django.core.context_processors import csrf
def home(request):
if request.method == 'POST':
print request.POST['name']
return render_to_response('registration.html', {},
context_instance=RequestContext(request))
是的,我知道目前我的JS无法从文本形式获取真实数据,它仅发送静态文本“ MY TEXT”。但是当我按下按钮时,出现
我做错了什么?
我更改了代码:main.js
$(document).ready(function(){ $("#register").live("click", function(e){
e.preventDefault();
$.post("/", {
name:'MY TEXT'
});
});
});
base.html:
<form method="POST">{% csrf_token %} First name: <input type="text" name="name">
<br>
<input type="submit" value="Register" id="register">
</form>
,谢谢!
虽然,我有两个问题:
- 在这种情况下,我应该在哪里发送“我的文字”?我注意到它从名称字段返回了ACTUAL数据,并且没有返回“ MY TEXT”
- 该页面仍在重新加载。我想完全使用AJAX。我的意思是创建一个python函数,将POST请求中的数据添加到MySQL数据库,然后将操作结果返回给AJAX-script。一切都无需重新加载页面。我怎样才能做到这一点?
回答:
发生的事情是您没有阻止浏览器的默认submit
操作发生。因此,您的Ajax POST完成了,但是浏览器本身立即进行了POST-
并且,正如Michal所指出的,您的表单不包含name
字段,因此查找失败。
您需要做两件事来解决此问题。首先,e.preventDefault();
在您的JS
click方法中使用。其次,request.is_ajax()
在视图顶部检查。
以上是 从Django格式AJAX获取POST数据 的全部内容, 来源链接: utcz.com/qa/397455.html