Django - 没有 JQuery 库的 Ajax
Posted
技术标签:
【中文标题】Django - 没有 JQuery 库的 Ajax【英文标题】:Django - Ajax without JQuery lib 【发布时间】:2015-08-17 05:03:41 【问题描述】:我正在学习和使用没有 jQuery Lib 的 Ajax。我创建了一个简单的视图,它在模板上呈现一个随机数。我添加了一个按钮并调用了 ajax 函数。但是,单击按钮不会更改屏幕上的值。我检查了 DOM (firebug),它显示 someText.responseText 正在产生整个 html 而不仅仅是值,但是它在该 HTML 中具有新值。我分享这个是为了提供更多关于我到目前为止发现的信息。我对此很陌生,并且对前进行了很多实验;我检查了“request.is_ajax():”,但不知何故,视图在请求中找不到 ajax。我已经在命令行上打印了请求,但 GET querydict 是空的。
显然我没有以正确的方式为 Django 做某事。请协助。
我有意见;
def home(request):
rand_num = random.randint(1,100)
return render(request, 'home.html', 'rand_num':rand_num)
还有html和脚本;
<html>
<head>
<script type='text/javascript'>
var someText;
function helloWorld()
someText = new XMLHttpRequest();
someText.onreadystatechange = callBack;
someText.open("GET", "% url 'home' %", true);
someText.send();
;
// When information comes back from the server.
function callBack()
if(someText.readyState==4 && someText.status==200)
document.getElementById('result').innerHtml = someText.responseText;
;
</script>
</head>
<body>
<div id="result">rand_num</div>
<input type='button' value='Abraca dabra!' onclick="helloWorld()"/>
</body>
</html>
这是该视图的网址;
url(r'^$', 'socialauth.views.home', name='home'),
我是从在线教程中学习的。
【问题讨论】:
【参考方案1】:那是因为您的 AJAX 端点是整个视图 - 即您的 AJAX 请求要求提供整个呈现的模板。
您想要的只是一个数字,因此创建一个新视图和 URL 以仅返回该数字,并向其发出 AJAX 请求。
AJAX 没有什么特别之处,它只是一种向 URL 发出异步请求并获取返回内容的方法。
作为参考,使用类似 JSONResponse 的视图:
from django.http import JsonResponse
def get_random_number_json(request):
random_no = random.randint(1,100)
return JsonResponse('random_no': random_no)
然后在您的前端 Javascript 中,获取该视图的 url,这将通过您的 AJAX 调用只为您提供 javascript 变量中的 JSON,而不是所有 document.getElementById('result')
处理,您可以从 json 中获取变量对象。
【讨论】:
感谢您的回复。我也这么认为,并尝试取出信息,但无法。你能就此提出一些建议吗?此外,即使我获得了该值,我认为该值仍然不会呈现在页面上,因为在当前情况下,它可能应该呈现整个 html 页面。对吗? 不要取出信息,只需创建第二个视图和 URL,它会为您提供所需的信息 - 基本上是一个 HTTPResponse 对象,其中只有正文中的值。 谢谢,我正在为此苦苦挣扎,不希望您编写整个代码。不管怎么说,还是要谢谢你。我会看看我能用它做什么。 我已经充实了一些信息,其余的您可以从 Django 文档和 AJAX 请求的 Javascript 示例中收集。以上是关于Django - 没有 JQuery 库的 Ajax的主要内容,如果未能解决你的问题,请参考以下文章
使用 Ajax jQuery 提交 Django 表单的简单方法
Cucumber (rails 2) 没有加载 jQuery