Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django,Ajax-HttpResponse不发送json_Ajax_Json_Django_Httpresponse - Fatal编程技术网

Django,Ajax-HttpResponse不发送json

Django,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表中检查了它。 按钮颜色会从白色变为蓝色,反之亦然,但文本不会改变。

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_类型

请帮帮我

看法

javascript

<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);
        ...
    }
});