gpt4 book ai didi

javascript - Django 中的 AJAX 调用完成时未调用成功函数 "Add to Favourites Button"

转载 作者:行者123 更新时间:2023-12-02 19:56:51 25 4
gpt4 key购买 nike

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

        {% if user.is_authenticated %}
<div id="favDiv"> <a id="favorite" href="/blogs/{{blog.id}}/favorite/"> Add to Favourites </a> </div>
{% endif %}

这个的jquery是

$("a#favorite").click(function(){

var link = $(this).attr("href");

$.ajax({
type: "POST",
url: link,
success: function()
{
alert("Function succeeded");
$("#favDiv").html("Favourites");
},
error: function()
{
alert("Function failed");
}
});
return false;
});

我想要做的是,当用户单击收藏夹按钮时,div 内的 html 应替换为简单文本。

我的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() 也没有执行可能是可能的原因。我有另一个类似的类似按钮的脚本,效果很好。

最佳答案

我猜是因为您返回的是 mimetype = 'application/javascript' 的响应,jQuery 期望能够将响应的内容作为 javascript 执行,但它会默默地解析它失败。

由于您要返回纯文本,我建议将 mimetype 修复为“text/plain”

调试提示:添加完整的回调 fn 并执行参数的 console.log

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

关于javascript - Django 中的 AJAX 调用完成时未调用成功函数 "Add to Favourites Button",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8495704/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com