Django,Ajax-HttpResponse不发送json
Django 1.7.2/python 3.4 这个代码是关于“like”的。 如果用户单击“like”按钮,ajax将调用“pushLike”。 如果用户喜欢保存在Mysql中的文章,请删除tableDB上的行。 或者,如果用户不喜欢该文章,则创建一行并将其插入tableDB 在那之后,数一数有多少人点击了那篇文章。 我想将likeCntcount传递给ajax,并将其写在按钮上 likeCnt具有正确的值我在服务器mysql表中检查了它。 按钮颜色会从白色变为蓝色,反之亦然,但文本不会改变。 看起来json并没有传递给ajax。我尝试通过“文本”类型传递数据,但确实有效,但我希望通过json传递数据 我在HttpResponse上尝试了simplejson、json、mimetype、content_类型 请帮帮我 看法 javascriptDjango,Ajax-HttpResponse不发送json,ajax,json,django,httpresponse,Ajax,Json,Django,Httpresponse,Django 1.7.2/python 3.4 这个代码是关于“like”的。 如果用户单击“like”按钮,ajax将调用“pushLike”。 如果用户喜欢保存在Mysql中的文章,请删除tableDB上的行。 或者,如果用户不喜欢该文章,则创建一行并将其插入tableDB 在那之后,数一数有多少人点击了那篇文章。 我想将likeCntcount传递给ajax,并将其写在按钮上 likeCnt具有正确的值我在服务器mysql表中检查了它。 按钮颜色会从白色变为蓝色,反之亦然,但文本不会改变。
<script type="text/javascript">
$(document).ready(function(){
$('#btn-like').click(function(){
var e = $('#btn-like').css('background-color');
$.ajax({
url : '/sle/freeboards/pushLike/',
data : {'writing_id':{{writing_id}},
},
dataType : "json",
success:function(data){
alert(data.likeCnt);
if(e == 'rgb(59, 89, 152)') {
$('#btn-like').css('background-color', '#ffffff').css('color', '#000000');
$('#btn-like').text(data.likeCnt);
} else {
$('#btn-like').css('background-color', '#3b5998').css('color', '#ffffff');
$('#btn-like').text(data.likeCnt);
}
},
failure: function(data){
alert('fail!!')
}
});
});
});
</script>
您需要确保在HttpResponse中设置正确的mimetype
@login_required
def pushLike(request):
...
# return json -- !!not javascript!!
return HttpResponse(simplejson.dumps(...), mimetype="application/json")
-或-
如果这不起作用,您是否尝试过用Jquery代码解析json?
即:
javascript实际上可能会从您为django应用程序提供的任何服务接收字节。。。因此,您实际上得到的不是JSON,而是类似于JSON的字符串 谢谢你的回答。尝试了以上所有方法,但均无效。现在我用字符串传递数据…您从HttpResponse接收到的数据类型是什么?console.logtypeof data我不知道为什么,但它现在可以工作了!!我用了你建议的第一种方法。谢谢你。顺便说一句,数据的类型是“未定义的”它是什么?未定义是javascript中的一个特殊对象,用于那些由于缺少更好的词而尚未定义的值。在python中,如果您试图访问一个尚未定义的属性,例如str.foo,python会引发AttributeError,您的程序会崩溃,或者在django的情况下,您会返回一个500错误,但在javascript中,任何不存在的对象的方法或属性都会返回一个未定义的对象。明白了吗。谢谢你帮助我。
@login_required
def pushLike(request):
...
# return json -- !!not javascript!!
return HttpResponse(simplejson.dumps(...), mimetype="application/json")
@login_required
def pushLike(request):
...
# return json -- !!not javascript!!
return JsonResponse({"your": "context dictionary"})
$.ajax({
...
success: function(data){
var response = $.parseJSON(data);
...
}
});