Javascript Django/AJAX/JQuery-简单的POST问题
我正在尝试实现我能想到的最简单的AJAX帖子,因为我对AJAX和JQuery还不熟悉。这个想法是这样的:我有一个按钮,当它被点击时,我想将基本的POST数据提交到同一个页面(页面是:http://{my ip address}}/django/ajax/) 在我的.html文件中,我有:Javascript Django/AJAX/JQuery-简单的POST问题,javascript,jquery,html,ajax,django,Javascript,Jquery,Html,Ajax,Django,我正在尝试实现我能想到的最简单的AJAX帖子,因为我对AJAX和JQuery还不熟悉。这个想法是这样的:我有一个按钮,当它被点击时,我想将基本的POST数据提交到同一个页面(页面是:http://{my ip address}}/django/ajax/) 在我的.html文件中,我有: <script type="text/javascript"> function pythonizer(){ $("#msgid").append("it SHOULD po
<script type="text/javascript">
function pythonizer(){
$("#msgid").append("it SHOULD post after this is appended");
$.ajax({
url: '/django/ajax/',
type: 'POST',
data: {'obj': "test string"},
dataType: 'json',
contentType: "application/json; charset=utf-8",
success: function(response) {
alert(response);
}
});
}
</script>
<div id="msgid">
</div>
<input type="button" id="myButton" value="click me" onclick="pythonizer()" />
很简单,对吧?然而,问题是,当我单击我的按钮时,“它应该在追加后发布”被成功地添加到div中,但没有发生其他事情,HttpResponse(“helloajax”)没有返回,发布不起作用
我所写的似乎与我读过的文档一致,但我有一种感觉,我要么遗漏了一些愚蠢的东西,要么试图将文章过于简单化。提前谢谢 我不知道django或python,但是javascript的问题是,当AJAX调用完成时,它什么都不做
<script type="text/javascript">
function pythonizer(){
$("#msgid").append("it SHOULD post after this is appended");
$.ajax({
url: '/django/ajax/',
type: 'POST',
data: {'obj':data}, // <-- possible error?
dataType: 'json',
contentType: "application/json; charset=utf-8",
success: function (response) {
alert(response);
}
});
}
</script>
函数pythonizer(){
$(“#msgid”).append(“它应该在追加后发布”);
$.ajax({
url:“/django/ajax/”,
键入:“POST”,
数据:{'obj':数据},//这里可能有错误
success: function(response)
没有调试信息,我不能告诉你更多。。。
python是否接收到请求?可能是它拒绝CSRF验证的问题,您需要添加并导入它:
@csrf_exempt
def myview(request):
print 'hello'
也许你可以在这里读到更多关于它的内容:
也许一开始最好不要那么深,对吗
那么为什么不使用另一个jQuery快捷方式呢
$.post('/django/ajax/', data, function(data){
alert(data);
});
也许我弄错了您的个人代码,但我想您可以在这里的官方帮助下找到答案:
这有两个好处:
Firebug(Mozilla firefox和其他一些浏览器也不错)
Django调试工具栏
它们对于python和jQuery方面的调试都很好…试着学习使用它们…(如果你还没有,很抱歉在这种情况下告诉你一件很明显的事情:)我假设你想要一个JSON响应
解释了可以使用的不同数据类型。当使用dataType:'json'
时,ajax方法希望响应上下文类型为json
在模板html文件中,尝试以下操作:
<script type="text/javascript">
function pythonizer(){
var data = "data";
$("#msgid").append("it SHOULD post after this is appended");
$.ajax({
url: '/django/ajax/',
type: 'POST',
data: {obj:data},
dataType: 'json',
contentType: "application/json; charset=utf-8",
success: function (response) {
alert(response);
}
error:function(){
alert("failure");
}
});
}
</script>
您有JS错误吗?可能JS变量“data”未定义。我已将其更改为更显式。它现在是data:{'obj':“test string”}。不过,这篇文章似乎仍然没有成功运行。我建议,如果您使用Firefox,请安装Firebug;如果您使用Chrome,请打开Javascript控制台,检查错误。您还可以使用每个浏览器的“网络”选项卡,查看您的ajax请求是否实际通过,以及状态如何。如果“undefined”这不是一个错误,只是因为pythonizer()
没有返回任何内容-如果您添加return true;
或其他内容,最后它会显示true
。response
很好。如果我不清楚,很抱歉-您会添加“return true;“pythonizer
函数的结尾。未定义的
绝对不是一个错误。您查看了网络选项卡吗?通过检查网络选项卡,您将能够确定帖子是否正在发生。好的,我得到了pythonizer()函数现在返回true。每次我运行该函数时,都会在Chrome的“网络”选项卡中添加一个方法:POST entry。状态为:200 OK。这听起来像是POST正在成功运行…但是为什么没有弹出警报窗口?也许可以试着去掉dataType和contentType属性-因为返回的内容不匹配这些,也许jQuery正试图变得聪明,并将其标记为失败,即使它成功地返回。
<script type="text/javascript">
function pythonizer(){
var data = "data";
$("#msgid").append("it SHOULD post after this is appended");
$.ajax({
url: '/django/ajax/',
type: 'POST',
data: {obj:data},
dataType: 'json',
contentType: "application/json; charset=utf-8",
success: function (response) {
alert(response);
}
error:function(){
alert("failure");
}
});
}
</script>
import json
from django.http import HttpResponse
def ajax(request):
if request.method == 'POST':
return HttpResponse({'message':'Hello Ajax'}, content_type = "application/json")