我的 javascript 返回此错误: $.ajax 不是函数
Posted
技术标签:
【中文标题】我的 javascript 返回此错误: $.ajax 不是函数【英文标题】:My javascript is returning this error: $.ajax is not a function 【发布时间】:2017-10-27 23:23:58 【问题描述】:不确定出了什么问题,但我从我的 chrome 控制台收到此错误:
jquery-3.2.1.slim.min.js:1244 jQuery.Deferred exception: $.ajax is not a function TypeError: $.ajax is not a function
at htmlDocument.<anonymous> (file:///C:/Users/Adam/Desktop/UseTime/js/example.js:3:7)
at j (file:///C:/Users/Adam/Desktop/UseTime/js/jquery-3.2.1.slim.min.js:1193:55)
at k (file:///C:/Users/Adam/Desktop/UseTime/js/jquery-3.2.1.slim.min.js:1199:45) undefined
r.Deferred.exceptionHook @ jquery-3.2.1.slim.min.js:1244
jquery-3.2.1.slim.min.js:1247 Uncaught TypeError: $.ajax is not a function
at HTMLDocument.<anonymous> (example.js:3)
at j (jquery-3.2.1.slim.min.js:1193)
at k (jquery-3.2.1.slim.min.js:1199)
来自这个 javascript:
$(function() //when the DOM is ready
var times; //declare global variable
$.ajax( //set up request
beforeSend: function (xhr) //before requesting data
if (xhr.overrideMimeType) //if supported
xhr.overrideMimeType("application/json"); // set MIME to prevent errors
);
//funciton that collect data from the json file
function loadTimetable() //decalre function
$.getJSON('data/example.json') //try to collect json data
.done(function (data) //if succesful
times = data; //store in variable
).fail(function () //if a problem: show message
$('#event').html('Sorry! we couldnt load your time table at the moment');
);
loadTimetable(); //call the function
//CLICK ON TEH EVENT TO LOAD A TIME TABLE
$('#content').on('click', '#event a', function (e) //user clicks on place
e.preventDefault(); //prevent loading page
var loc = this.id.toUpperCase(); //get value of id attr
var newContent = "";
for (var i = 0; i < times[loc].length; i++) // loop through sessions
newContent += '<li><span class = "time">' + times[loc][i].time + '</span>';
newContent += '<a href = "descriptions.html#';
newContent += times[loc][i].title.replace(/ /g, '-') + '">';
newContent += times[loc][i].title + '</a></li>';
$('#sessions').html('<ul>' + newContent + '</ul>'); // Display Time
$('#event a.current').removeClass('current'); // update selected link
$(this).addClass('current');
$('#details').text('');
);
//CLICK ON A SESSION TO LEAD THE DESCRIPTION
$('#content').on('click', '#sessions li a', function (e) //click on session
e.preventDefault(); // prevent loading
var fragment = this.href; //title is in href
fragment = fragment.replace('#', ' #'); //Add Space before #
$('#details').load(fragment); //to load info
$('#sessions a.current').removeClass('current'); //update selected
);
//CLICK ON PRIMARY NAVIGATION
$('nav a').on('click', function (e) //click on nav
e.preventDefault(); //prevent loading
var url = this.href; //get UR: to load
$('nav a.current').removeClass('current');
$(this).addClass('current');
$('#container').remove(); //remove old
$('#content').load(url + ' #container').hide().fadeIn('slow'); // add new
);
);
我不确定这是否与我启动 .ajax 的方式有关,或者我的 jquery 是否未正确实现。我认为是这样。有什么想法吗?
编辑:这是上面脚本附带的 html
<!DOCTYPE html>
<body>
<header>
<h1>UseTime</h1>
<nav>
<a href="jq-load.html">HOME</a>
<a href="jq-load.html2">PROFILE</a>
<a href="jq-load.html4">MANAGE TASKS</a>
<a href="usetime.html">TIME TABLE</a>
</nav>
</header>
<section id="content">
<div id="container">
<div class="third">
<div id="event">
<a id="class1" href="class1.html"><img src="" /> Class 1 </a>
<a id="class2" href="class2.html"><img src="" /> Class 2 </a>
<a id="class3" href="class3.html"><img src="" /> Class 3 </a>
</div>
</div>
<div class="third">
<div id="sessions"> Select a Class from the left </div>
</div>
<div class="third">
<div id="details"> Details </div>
</div>
</div>
<!-- container -->
</section>
<!-- content -->
<script src="js/jquery-3.2.1.slim.min.js"></script>
<script src="js/example.js"></script>
</body>
【问题讨论】:
您是否将任何 jQuery 链接到您的代码?在任何其他 javascript 之前链接 Jquery。它可能会起作用。 是的,它在调用它的 html 中,我会把它扔到帖子中 【参考方案1】:您正在使用 jQuery 的精简版。它不支持 ajax 调用。 使用
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
代替它。
超薄身材
有时您不需要 ajax,或者您更喜欢使用其中一种 专注于 ajax 请求的独立库。而且通常是 更简单地使用 CSS 和类操作的组合 你的网络动画。连同 jQuery 的常规版本 包括 ajax 和效果模块,我们发布了一个“slim”版本 不包括这些模块。总而言之,它不包括ajax,效果, 和当前已弃用的代码。 jQuery 的大小很少是 这些天的负载性能问题,但苗条的构建约为 6k gzipped 字节比常规版本小——23.6k vs 30k。这些 文件也可以在 npm 包和 CDN 中找到:
https://code.jquery.com/jquery-3.1.1.slim.js
https://code.jquery.com/jquery-3.1.1.slim.min.js
转自jQuery Blog
【讨论】:
ohhhh 我不知道,这是有道理的,我会试一试。谢谢 你们很多人都从这里引用它。 blog.jquery.com/2016/09/22/jquery-3-1-1-released 这个答案是纯金的.. 花了我 2 个小时。他们为什么要删除 AJAX - 它是围绕 jQuery 的最佳功能之一。 @AdhershMNair:当然——相信大多数应用程序都需要这个功能 “入门”下的引导示例模板会加载精简版。必须在code.jquery.com 上从他们的 CDN 中获取正确的信息。【参考方案2】:jQuery 3 slim 版本不支持 ajax。
根据release docs,
与包含 ajax 和 效果模块,我们正在发布一个不包括这些的“苗条”版本 模块。总而言之,它不包括 ajax、效果和当前 不推荐使用的代码。
要使用.ajax
方法,只需使用完整版。
试试这个 (jquery-3.2.1.min.js) 而不是 slim (jquery-3.2.1.slim.min.js)
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
【讨论】:
以上是关于我的 javascript 返回此错误: $.ajax 不是函数的主要内容,如果未能解决你的问题,请参考以下文章
ArcGIS API for JavaScript 4.2学习笔记[0] AJS4.2概述新特性未来产品线计划与AJS笔记目录
ASP.NET 控件的 JavaScript getElementById 返回 null?
ArcGIS API for JavaScript 4.4学习笔记[新] AJS4.4和AJS3.21新特性