从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_response

from 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>

,谢谢!

虽然,我有两个问题:

  1. 在这种情况下,我应该在哪里发送“我的文字”?我注意到它从名称字段返回了ACTUAL数据,并且没有返回“ MY TEXT”
  2. 该页面仍在重新加载。我想完全使用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

回到顶部