gpt4 book ai didi

javascript - jquery ajax 调用未在函数调用内执行警报

转载 作者:行者123 更新时间:2023-12-03 07:57:54 25 4
gpt4 key购买 nike

我不知道为什么这不起作用:

$.get("/some/url/", function(event) {
alert('hey');
});

当我单击按钮时,我可以在 Firefox 的控制台中看到执行的响应,并且可以看到它成功了(200 OK)。我还可以看到网络服务器的响应是正确的...那么为什么函数调用内的警报不起作用?警报在函数调用之外工作。

这是上下文的整个 block :

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>
<script src="/static/js/bootstrap.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
$("#some_id").click(function(event) {
$.get("/some/url/", function(data) {
alert('hey');
});
});
});
</script>

如果这有什么区别的话,我正在使用 Django。

编辑:此后,我将 View 从 HTTPResponse 更改为 JSONResponse,现在 ajax 调用不会失败,我可以抛出警报。感谢所有提出类型问题的人,仍然不确定为什么 HTTPResponse 会传递对象,但 ajax 调用会认为这是“失败”。特别感谢 Miguel Lattuada 和 JRodDynamite 帮助我走上正确的道路。

编辑2:对于那些好奇的人,我的 View (Django)返回的是:

return HttpResponse(response, content_type='application/json')

我把它改成这样:

return  JsonResponse(response, safe=False)

由于某种原因,这似乎让 ajax 感到高兴,并导致 success 函数调用成功。

最佳答案

我的猜测是您提交了您的页面。

试试这个

<!DOCTYPE html>
<html>
<head>
<title>Test</title>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(function() {
$("#some_id").on("click",function(event) {
event.preventDefault(); // cancel the event - not needed on type=button though
$.get("/some/url/", function(data) {
window.console&&console.log('hey');
});
});
});
</script>
</head>
<body>
<button type="button" id="some_id">Click</button>
</body>
</html>

这假设/some/url/的返回值是有效对象 - 控制台应该告诉您

关于javascript - jquery ajax 调用未在函数调用内执行警报,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34727027/

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