我试图创建一个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.

Why?


当前回答

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

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

其他回答

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

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

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

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

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

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

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

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

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

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

如你所写:-

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

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

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

让我分享一下我的经验:

我的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>

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