TypeError:$ .ajax(...)不是函数?

时间:2013-08-16 10:31:35

标签: jquery ajax json

我正在尝试创建一个简单的AJAX请求,该请求从MySQL数据库返回一些数据。这是我的功能如下:

function AJAXrequest(url, postedData, callback) {
    $.ajax() ({
        type: 'POST',
        url: url,
        data: postedData,
        dataType: 'json',
        success: callback
    });
}

...这就是我所说的,解析所需的参数:

AJAXrequest('voting.ajax.php', imageData, function(data) {
    console.log("success!");
});

然而,我的成功回调没有运行(因为“成功!”没有记录到控制台),我在控制台中收到错误:

TypeError: $.ajax(...) is not a function.
success: callback

这是什么意思?在成功事件触发$ .ajax内部的匿名函数之前,我已经完成了AJAX请求,但现在我正在尝试运行一个单独的命名函数(在这种情况下,是一个回调)。我该怎么做?

16 个答案:

答案 0 :(得分:626)

这里的答案都没有帮助我。问题是:我正在使用jQuery的简洁构建,删除了一些东西,ajax就是其中之一。

解决方案:只需下载jQuery here的常规(压缩或非压缩)版本并将其包含在您的项目中。

答案 1 :(得分:102)

仔细检查您是否使用完整版本的jquery而不是一些超薄版本。

我使用的是jquery附带的jquery cdn-script链接。问题是这个默认情况下是slim.jquery.js,其中没有ajax函数。因此,如果您正在使用(从Bootstrap网站复制粘贴)slim版本jquery脚本链接,请使用完整版本。

也就是说使用 <script src="https://code.jquery.com/jquery-3.1.1.min.js"> 代替 <script src="https://code.jquery.com/jquery-3.1.1.slim.min.js"

答案 2 :(得分:26)

不确定,但您的代码中出现语法错误。尝试:

$.ajax({
  type: 'POST',
  url: url,
  data: postedData,
  dataType: 'json',
  success: callback
});

$.ajax旁边有额外的括号,不需要。如果仍然出现错误,则不会加载jQuery脚本文件。

答案 3 :(得分:11)

结帐Jquery Documentation

  

弃用通知:从jQuery 3.0开始,jqXHR.success(),jqXHR.error()和jqXHR.complete()回调被删除。您可以使用jqXHR.done(),jqXHR.fail()和jqXHR.always()代替。

答案 4 :(得分:4)

您的AJAX功能出错,括号过多,请改为$.ajax({

答案 5 :(得分:3)

在ajax函数和另一组括号之后放置括号以定义参数列表时出现语法错误: -

如你所知: -

$.ajax() ({
    type: 'POST',
    url: url,
    data: postedData,
    dataType: 'json',
    success: callback
});

必须删除ajax周围的括号,它应该是: -

$.ajax({
    type: 'POST',
    url: url,
    data: postedData,
    dataType: 'json',
    success: callback
});

答案 6 :(得分:2)

我遇到了同样的问题,我的解决方案是:添加JQuery脚本。

特别是,当我们在firefox / chrome下调试js时,我们应该确保加载相应的JQuery。

答案 7 :(得分:2)

参考包含ajax的jquery min版本:

<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>

答案 8 :(得分:2)

如果您使用的是Bootstrap html模板,请记住删除模板底部jquery slim的链接。我在此处发布了此详细信息,因为我尚无法评论答案。

答案 9 :(得分:2)

我使用了以下版本的 jQuery 并且它有效

<script src="https://code.jquery.com/jquery-3.3.1.min.js"
    integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script>

答案 10 :(得分:1)

对于任何试图在 nodejs 中运行它的人:它不会开箱即用,因为jquery需要一个浏览器(或类似的)!我只是试图让导入运行并且正在记录console.log($),其中写入了[Function],然后还记录了返回console.log($.ajax)的{​​{1}}。我没有undefined错误并且从intellij自动完成,所以我想知道发生了什么。

然后在某些时候我意识到tsc可能是问题,而不是打字稿。我在浏览器中尝试了相同的代码并且它有效。要使其工作,您需要运行:

node

(学分:https://stackoverflow.com/a/4129032/3022127

答案 11 :(得分:1)

我知道这是一个古老的帖子-Gus基本上回答了它。 但是根据我的经验,JQuery从那以后更改了他们从CDN导入的代码-所以我想我会继续发布他们最新的从CDN导入的代码:

<script src="https://code.jquery.com/jquery-3.5.1.min.js" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script>

答案 12 :(得分:0)

现在回答答案为时已晚,但此回答可能对将来的读者有所帮助。

我想分享一个场景,例如有多个html文件(一个基本html和多个子HTML ),其中一个子HTML中使用了$ .ajax。

假设在子HTML中,通过URL“ https://code.jquery.com/jquery-3.5.0.js”包含js,在基本/父HTML中通过URL-““ https://code.jquery.com/jquery-3.1.1.slim.min.js””包含js,那么将使用JS的精简版使用此子HTML以及上述基本HTML的所有页面。

在使用引导框架使用“ https://code.jquery.com/jquery-3.1.1.slim.min.js”加载js的情况下尤其如此。

因此,要解决该问题,需要确保在所有页面中都通过URL“ https://code.jquery.com/jquery-3.5.0.js”或包含所有JQuery库的最新URL来包含js。

感谢 Lily H。向我指出此答案。

答案 13 :(得分:0)

不要使用 slim 构建的jQuery,它没有ajax函数。使用完整版本,而不是https://jquery.com/download/

注意:请确保不要使用从Bootstrap网站复制的jquery链接,因为它们使用的是超薄版本。

答案 14 :(得分:-1)

让我分享我的经验:

我的html页面设计器使用:

<script src="https://code.jquery.com/jquery-3.4.1.slim.min.js" integrity="sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n" crossorigin="anonymous"></script>

当我创建一个简单的AJAX请求时,显示错误消息, TypeError:$。ajax(…)不是函数

所以,我补充:

<script src="https://code.jquery.com/jquery-3.4.1.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script>

然后,它至少对我来说是完美的。

答案 15 :(得分:-1)

那是你的 jquery 版本有问题。 看这里 https://code.jquery.com/ 并添加此脚本

<script
  src="https://code.jquery.com/jquery-3.5.1.js"
  integrity="sha256-QWo7LDvxbWT2tbbQ97B53yJnYU3WhH/C8ycbRAkjPDc="
  crossorigin="anonymous">
</script>