Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery TypeError:$.ajax(…)不是函数吗?_Jquery_Ajax_Json - Fatal编程技术网

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

Jquery TypeError:$.ajax(…)不是函数吗?,jquery,ajax,json,Jquery,Ajax,Json,我试图创建一个简单的AJAX请求,它从MySQL数据库返回一些数据。下面是我的函数: function AJAXrequest(url, postedData, callback) { $.ajax() ({ type: 'POST', url: url, data: postedData, dataType: 'json', success: callback }); } …我在这里调用它,解析所

我试图创建一个简单的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!");
});
但是,我的成功回调没有运行(因为“success!”没有记录到控制台),并且我的控制台中出现了一个错误:

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

这是什么意思?我以前做过AJAX请求,成功事件触发$.AJAX中的匿名函数,但现在我尝试运行一个单独的命名函数(在本例中是回调)。我该怎么办

不确定,但代码中似乎有语法错误。尝试:

$.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 3.0开始,jqXHR.success()、jqXHR.error()和jqXHR.complete()回调将被删除。您可以改用jqXHR.done()、jqXHR.fail()和jqXHR.always()


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


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

对于任何试图在nodejs中运行此功能的人来说::它无法立即运行,因为jQuery需要一个浏览器(或类似的工具)!我正试图让导入运行,并且正在记录
console.log($)
它编写了
[Function]
,然后还编写了
控制台.log($.ajax)
它返回了
未定义的
。我没有
tsc
错误,并且从intellij自动完成,所以我想知道发生了什么

后来我意识到,
node
可能是问题所在,而不是typescript。我在浏览器中尝试了相同的代码,结果成功了。要使其正常工作,您需要运行:

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

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

(信用证:)

如果您使用的是完整版本的jquery,而不是精简版本,请仔细检查

我使用的是jquery附带的jquery cdn脚本链接。问题是,默认情况下,这个链接是slim.jquery.js,其中没有
ajax
功能。因此,如果您使用(从引导网站粘贴副本)slim版本的jquery脚本链接,请改用完整版本

也就是说使用
而不是
参考包含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文件(一个基本html和多个子HTMLs),其中一个子HTMLs中使用了$.ajax

假设在子HTML中,js通过URL“”包含在基本/父HTML中,通过URL-“”,则js的精简版本将在使用此子HTML以及上述基本HTML的所有页面中使用

在使用引导框架的情况下尤其如此,引导框架使用“”加载js

所以要解决这个问题,需要确保在所有页面中,js都是通过URL“”或包含所有JQuery库的最新URL包含的


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

让我分享一下我的经验:

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


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

不要使用jQuery的slim构建,它没有ajax功能。请使用完整版


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

我知道这是一篇旧帖子,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.5.1.js"
  integrity="sha256-QWo7LDvxbWT2tbbQ97B53yJnYU3WhH/C8ycbRAkjPDc="
  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将此$.ajax()({更改为$.ajax({您调用了
$.ajax
,没有参数(
$.ajax()
),返回值是一个jqXHR对象,它不是一个函数。因此,
$.ajax()(…)
将抛出一个错误。要么您没有包含jquery.js,要么您在函数调用下面包含了jquery.js,要么请尝试jquery.ajax(用jquery替换$)。在我的例子中,这是因为我使用的JQuery版本去掉了ajax函数。这不是一个语法错误。返回值应该是一个函数,而不是。啊,我明白了。所以,实际上,这个问题只是缺少一个JQuery脚本文件引用。不。将其视为
$.ajax();
。这是有效的JavaScript。这意味着“调用
$.ajax
以及它返回的任何内容,也调用它”。但是
$.ajax
不返回函数(可以调用),它返回一个
jqXHR
对象,因此它抛出一个错误。Yo