323

我正在创建一个简单的 AJAX 请求,它从数据库中返回一些数据。下面是我的功能:

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

这是我调用它的地方,提供所需的参数:

AJAXrequest('voting.ajax.php', imageData, function(data) {
    // function body
});

然而,回调没有运行,而是在控制台中出现错误:

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

为什么?在成功事件触发 $.ajax 内的匿名函数之前,我已经完成了 AJAX 请求,但现在我正在尝试运行一个单独命名的函数。我该怎么做?

4

16 回答 16

1262

这里的答案都没有帮助我。问题是:我使用的是 jQuery 的精简版本,它删除了一些东西,ajax 就是其中之一。

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

于 2016-11-21T03:46:27.500 回答
161

仔细检查您是否使用的是完整版的 jquery 而不是一些精简版。

我使用的是 jquery 附带的 jquery cdn-script 链接。问题是这个默认情况下是 slim.jquery.js,它没有这个ajax功能。因此,如果您使用(从 Bootstrap 网站复制粘贴)精简版 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"

于 2017-09-12T20:28:32.970 回答
27

不确定,但您的代码中似乎存在语法错误。尝试:

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

你有多余的括号旁边$.ajax是不需要的。如果仍然出现错误,则 jQuery 脚本文件未加载。

于 2013-08-16T10:32:36.977 回答
7

参考包含ajax的jquery min版本:

<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
于 2019-08-30T18:15:43.000 回答
5

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

<script src="https://code.jquery.com/jquery-3.3.1.min.js"
    integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script>
于 2021-03-17T12:05:06.030 回答
3

不要使用 jQuery 的苗条版本,它没有 ajax 功能。使用来自https://jquery.com/download/的完整版本

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

于 2020-08-29T18:20:49.923 回答
2

出现语法错误,因为您在 ajax 函数和另一组括号后放置了括号来定义参数列表:-

正如你所写: -

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

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

$.ajax({
    type: 'POST',
    url: url,
    data: postedData,
    dataType: 'json',
    success: callback
});
于 2013-08-16T10:34:45.143 回答
2

你的 AJAX 函数有错误,括号太多,试试吧$.ajax({

于 2013-08-16T10:34:49.350 回答
2

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

<script src="https://code.jquery.com/jquery-3.5.1.min.js" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script>
于 2020-10-14T23:24:30.880 回答
1

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

特别是在firefox/chrome下调试我们的js时,要确保加载了对应的JQuery。

于 2016-05-04T06:19:53.060 回答
1

如果您使用的是 bootstrap html 模板,请记住删除模板底部的 jquery slim 链接。我在这里发布这个细节,因为我还不能评论答案..

于 2019-10-06T09:35:56.103 回答
0

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

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

require("jsdom").env("", function(err, window) {
    if (err) {
        console.error(err);
        return;
    }

    var $ = require("jquery")(window);
});

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

于 2017-06-20T14:26:17.303 回答
0

这对于答案来说为时已晚,但此响应可能对未来的读者有所帮助。

我想分享一个场景,假设有多个 html 文件(一个基本 html 和多个子 HTML)并且 $.ajax 正在其中一个子 HTML 中使用。

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

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

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

感谢Lily H.为我指出了这个答案。

于 2020-04-12T11:51:22.787 回答
0
  1. JQuery官网:点我

  2. 选择您需要的版本(建议使用最新的稳定版本)并点击解压按钮 在此处输入图像描述

  3. 复制对话框上的脚本并粘贴到您的代码中: 在此处输入图像描述

于 2021-10-01T17:09:17.117 回答
-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(...) is not a function

所以,我补充说:

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

那么,它至少对我有用。

于 2020-05-11T19:16:35.337 回答
-2

这是您的 jquery 版本的问题。看这里 https://code.jquery.com/ 并添加这个脚本

<script
  src="https://code.jquery.com/jquery-3.5.1.js"
  integrity="sha256-QWo7LDvxbWT2tbbQ97B53yJnYU3WhH/C8ycbRAkjPDc="
  crossorigin="anonymous">
</script>
于 2020-12-19T22:47:54.980 回答