如何使用 jQuery/AJAX 访问 views.py 中的变量?
Posted
技术标签:
【中文标题】如何使用 jQuery/AJAX 访问 views.py 中的变量?【英文标题】:How do I access a variable in views.py using jQuery/AJAX? 【发布时间】:2012-11-08 13:08:09 【问题描述】:编辑
当我编写 print request.POST['video'] 时,即使存在 'video' 的值,控制台中也不会打印任何内容。我是否在 javascript 中错误地获取了错误的值?我正在尝试显示“video34”(隐藏字段中的值)。
原创
我正在尝试在 Django 中使用 jQuery/AJAX 发布数据,但遇到了麻烦。如何访问 views.py 中的“视频”变量?当我在 views.py 中编写“打印视频”时,我在控制台中收到错误消息 POST /edit_favorites/ HTTP/1.1" 500 10113。
views.py
from django.shortcuts import render_to_response
from django.http import HttpResponse
from django.views.decorators.csrf import csrf_exempt
@csrf_exempt
def edit_favorites(request):
if request.is_ajax():
message = "Yes, AJAX!"
else:
message = "Not Ajax"
return HttpResponse(message)
urlconf:
url(r'^edit_favorites/', 'edit_favorites'),
html:
<form method='post' id ='test'>
<input type="hidden" value="video34" />
<input type='submit' value='Test button'/>
<div id = 'message'>Initial text</div>
</form>
javascript:
<script type="text/javascript">
$(document).ready(function()
$("#test").submit(function(event)
event.preventDefault();
$.ajax(
type:"POST",
url:"/edit_favorites/",
data:
'video': $('#test').val() // from form
,
success: function()
$('#message').html("<h2>Contact Form Submitted!</h2>")
);
return false;
);
);
</script>
【问题讨论】:
【参考方案1】:它在request.POST['video']
中,就像在普通的 POST 中一样。
【讨论】:
当我编写 print request.POST['video'] 时,即使存在 'video' 的值,控制台中也不会打印任何内容。我是否在 javascript 中错误地获取了错误的值?我正在尝试让“video34”显示出来。 是的。#test
指的是表单,表单没有val()
。你应该给你的领域一个id
并使用它。请注意,您还应该始终为您的字段提供name
,否则您将无法正常提交。
使用 $('#test').serialize() 来查看所有表单数据。就像丹尼尔说的那样,表单没有 val(),所以你什么都不发送【参考方案2】:
在您在控制台POST /edit_favorites/ HTTP/1.1" 500 10113
中收到的消息中,“500”是关键。这意味着您的服务器代码很可能有错误。在这种情况下,您试图“打印”一个不存在的变量。事实上,我很惊讶您在某处看不到 NameError
的回溯。
我不是 Django 用户,所以也许其他人可以提出更好的建议,但根据Django docs,所有帖子参数都在request.POST
中,这是一个类似字典的对象。
我建议检查一下:
if request.method == 'POST':
if 'video' in request.POST:
video = request.POST['video']
# Do stuff, etc...
else:
# Raise an error
那是在服务器端。在您的 HTML 中,您还需要为所有表单输入字段命名。例如<input name="video" type="hidden" value="video32" />
等。您可能希望阅读有关 HTML 表单发布的更多信息。
【讨论】:
当我编写 print request.POST['video'] 时,即使有 'video' 的值,控制台中也不会打印任何内容。我是否在 javascript 中错误地获取了错误的值?我正在尝试让“video34”显示出来。 在您的情况下,您的 HTML 还缺少表单输入字段的“名称”属性。以上是关于如何使用 jQuery/AJAX 访问 views.py 中的变量?的主要内容,如果未能解决你的问题,请参考以下文章
使用jQuery AJAX请求CodeIgniter从Controller显示数据库中的数据到View而不刷新页面
我如何确定每个访问者正在执行 jquery ajax 调用?