Javascript 在Django for“的AJAX调用完成时未调用success函数;“添加到收藏夹”按钮;

Javascript 在Django for“的AJAX调用完成时未调用success函数;“添加到收藏夹”按钮;,javascript,jquery,ajax,django,Javascript,Jquery,Ajax,Django,我正在尝试使用AJAX调用在我的应用程序中创建“添加到收藏夹”按钮。我的html代码片段是 {% if user.is_authenticated %} <div id="favDiv"> <a id="favorite" href="/blogs/{{blog.id}}/favorite/"> Add to Favourites </a> </div> {% endif %} 我想

我正在尝试使用AJAX调用在我的应用程序中创建“添加到收藏夹”按钮。我的html代码片段是

        {% if user.is_authenticated %}
                <div id="favDiv"> <a id="favorite" href="/blogs/{{blog.id}}/favorite/"> Add to Favourites </a> </div>
        {% endif %}
我想做的是,当用户单击favorite按钮时,div中的html应该被简单文本替换

My
views.py
包含

def favorite_blog(request,blog_id):

    blog = get_object_or_404(Entry, pk=blog_id)

    current_user = request.user
    fav = favorite(user=current_user,entry = blog)    
    fav.save()

    if request.is_ajax():    

        return_message = "Set Favourite"
        return HttpResponse(return_message,mimetype='application/javascript')

    else:
        return HttpResponseRedirect(reverse('view_blog', args=(),kwargs={'blog_id': blog.id,})) 

一切正常,当我单击按钮时,数据库得到更新,但是
success:function()
没有执行,也没有
failure:function()
可能的原因是什么。我为like按钮编写了另一个类似的脚本,效果很好。

我猜是因为您返回了一个带有mimetype='application/javascript'的响应,jQuery希望能够以javascript的形式执行响应的内容,但它无法对其进行静默解析

既然您返回的是纯文本,我建议将mimetype修改为“text/plain”

调试提示:添加参数的完整回调fn和do console.log

...
complete: function(jqXHR, textStatus){ 
    console.log(textStatus);
    console.log(jqXHR);
},
...

我不确定这是否只是示例代码中的一个输入错误,但是:您的成功函数和错误函数之间缺少一个逗号。pdb,您可以单步检查代码,看看它在哪里执行不理想。我按照您所说的做了,但问题仍然存在。与添加到收藏夹类似,我还制作了一个like按钮,它的视图非常相似,javascript在成功时为现有的like计数添加了一个like按钮。我不明白为什么会出现这个问题我按照你的要求做了,但是没有任何东西被登录到。。。我只是不明白问题出在哪里。有什么建议吗?您是否尝试过使用firebug网络选项卡或chrome中的web开发者工具进行调试?在这里,您可以看到http响应代码、内容等etcI一直在尝试使用firebug,但这在我的firefox中不起作用。。。我将尝试chrome,看看我在conosle.log中做了什么,遗憾的是,我在firebug调试器中根本看不到任何东西,我不明白问题是什么
...
complete: function(jqXHR, textStatus){ 
    console.log(textStatus);
    console.log(jqXHR);
},
...