自从我现在进行网络编程以来已经有一段时间了,并且设法使自己陷入麻烦。解决某人的问题可能微不足道,但我已经在网上进行了大量搜索。我所能找到的是使用正确的jQuery源解决“ $ .ajax不是函数”问题的各种方法。我知道了。我想知道的是,为什么不在JavaScript函数中时,ajax调用可以正常工作?一旦将其放入函数中,就会出现“ $ .ajax不是函数”的问题。这是我的资料来源:
<script
src="https://code.jquery.com/jquery-3.4.1.min.js"
integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo="
crossorigin="anonymous"></script>
<script type="text/javascript">
function callback() {}
$(".dropdown-item").on("click", function () {
// Does not work
callAjax();
});
// Does not work if called from wherever
function callAjax(){
$.ajax({
url: '@Url.Action("ajax", "Company")',
contentType: "application/json; charset=utf-8",
dataType: "json",
type: "POST",
data: { name: "myName" },
success: callback
});
}
// Does work (Same as above, just outside function)
$.ajax({
url: '@Url.Action("ajax", "Company")',
contentType: "application/json; charset=utf-8",
dataType: "json",
type: "POST",
data: { name: "myName" },
success: callback
});
</script>
答案 0 :(得分:2)
这告诉我们文件中稍后的一些脚本代码是:
调用jQuery的noConflict
函数,该函数释放$
标识符,或者
包括一些脚本,这些脚本会覆盖$
中的值(例如:“ Slim”构建中的MooTools.js,Prototype.js甚至是jQuery本身)
您可以通过将代码包装在使用自己的$
的函数中来解决此问题,如下所示:
(function($) {
// ...your code here, can use `$` without worrying...
})(jQuery); // <== Passes in `jQuery`, which is a synonym for `$`
即使以后的某些代码调用noConflict
,甚至完全覆盖$
(甚至是jQuery
),该代码仍将继续工作,因为它可以获取{{1}的值}的运行时间。