$.ajax(…)不是一个函数?

我试图创建一个AJAX请求。下面是我的函数定义:

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

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

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

然而回调没有运行,相反,我得到了console.error:

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

为什么?

539584 次浏览

不确定,但看起来你的代码中有一个语法错误。试一试:

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

你在$.ajax旁边有额外的括号,这是不需要的。如果仍然得到错误,则不会加载jQuery脚本文件。

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

如你所写:-

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

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

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

你有一个错误在你的AJAX函数,括号太多,尝试代替$.ajax({

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

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

这两个答案都帮不了我。问题是:我使用的是jQuery的精简版本,其中有一些东西被删除,ajax是其中之一。

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

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

然后在某个时候,我意识到node可能是问题,而不是typescript。我在浏览器中尝试了相同的代码,它工作了。为了让它工作,你需要运行:

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


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

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

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

我使用的是jquery cdn-script链接自带的jquery。问题是这个默认是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" < / p >

引用包含ajax的jquery最小版本:

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

如果你使用的是bootstrap html模板,记得删除模板底部的jquery slim链接。

让我分享一下我的经验:

我的HTML页面设计器使用:

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

当我创建一个简单的AJAX请求,得到一个错误,它说, $.ajax(…)不是一个函数

所以,我补充说:

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

那么,至少对我来说是完美的。

不要使用jQuery的苗条的版本,它没有ajax函数。使用缩小版本代替https://releases.jquery.com/

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

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

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

我使用以下版本的jQuery和它的工作

<script src="https://code.jquery.com/jquery-3.3.1.min.js"
integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script>
我包括引导脚本和第一个(jquery.slim)是这个错误的原因。删除第一行解决了我的问题。 error-img < / p >