JQuery问题 "TypeError: $.getJSON不是一个函数"

56

我有这段代码:

$(document).ready(function () {
    $.getJSON('http://localhost:5000/', function (response) {
        console.log(response);
    });
});

localhost:5000是一个flask/python脚本,返回一个类似于json的对象:

{
  "data": [
    0, 
    0, 
    0, 

我得到的结果是:

$.getJSON is not a function TypeError: $.getJSON is not a function

有什么建议可以帮我开始理清混乱的情况吗?

谢谢!

编辑:

HTML:

<!DOCTYPE html>
<html>

<head>
    <script src="https://code.jquery.com/jquery-3.1.1.slim.min.js"></script>
    <script src="lib/main.js"></script>
</head>

<body>
</body>

</html>

lib/main.js 是包含 document.ready 的位置。

谢谢!


1
你的页面加载了哪些脚本?要么你没有包含 jQuery,要么在此之前你调用了 jQuery.noConflict()(这意味着从那时起你必须使用 jQuery 而不是 $)。 - Adam Jenkins
如果他没有加载jQuery,那么在$(document)上会出现错误($未找到或类似)...所以这可能是noConflict的问题... - patrick
你的HTML没有检测到你的jQuery库。 - Beginner
@GabrielA.Zorrilla 请查看下面答案中的我的建议。 - Aruna
6个回答

173
你似乎正在使用 slim 版本的 jquery,它没有 getJSON 方法,这就是为什么会出现此错误。
请改用完整版本的 jquery,从下面的链接下载。 https://code.jquery.com/jquery-3.1.1.min.js jqueryslim 版本不包括 ajax动画效果 等功能。

我使用最新版本,但仍然出现错误。 当我使用window.jQuery检查JQuery是否在该点处活动时,我得到一个true。 因此,JQuery已加载,但错误仍然存在。 我使用以下代码片段:<script src="https://code.jquery.com/jquery-3.6.0.js" integrity="sha256-H+K7U5CnXl1h5ywQfKtSj8PCmoN9aaq30gDh27Xc0jk=" crossorigin="anonymous"></script> - Grimclaw Draven

3

当从jQuery v1.x+迁移代码库到v3.0+时,通常会发生这种情况,因为jQuery更新/弃用/停用了部分API。

我建议使用jQuery Migrate来解决此问题,以及其他问题:

通过CDN获取:

https://cdnjs.com/libraries/jquery-migrate

如果使用Gulp/Grunt,您可以使用以下命令将其导入到项目中:

npm install --save jquery jquery-migrate

Github代码库 - https://github.com/jquery/jquery-migrate

了解更多关于jQuery v3.0+的信息,请参阅http://blog.jquery.com/2016/06/09/jquery-3-0-final-released/


5
没错。当我从 jQuery v1.x+ 升级到 v3.0+ 时,遇到了很多已弃用的调用方法:$.getJSON( ...snip... ).success() 现在要用 .done(),.error() 现在要用 .fail(),.complete() 现在要用 .always()。 - Pierre

1
function cinta(){
$.getJSON('http://localhost:5000/', function (response) {
        console.log(response);
    });
}
cinta();
$(document).ready(function () {
  console.log('yesss');  
});

这在Python Flask中对我有用


1

我的代码也遇到了同样的错误,

$.getJson("/foo.json")

问题是我的函数实际上拼写错误。
$.getJSON

不是$.getJson


1
请使用完整版本的jquery CDN而不是Slim / Lite版本。
 <script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>

没有跨域和完整性,希望它能正常工作


0

你也可以使用 asyncawait 来结合 Fetch

async function getData(){
  const response = await fetch( "http://localhost:5000/"
);
  return response.json();
}


getData().then((data) => {
//... your code
})

现场演示


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接