【发布时间】:2019-11-13 08:35:49
【问题描述】:
我现在已经有一段时间没有进行网络编程了,并且设法让自己陷入了一些麻烦。为某人解决可能是一件微不足道的事情,但我在网上搜索了很多。我所能找到的只是通过使用正确的 jQuery 源来解决“$.ajax 不是函数”问题的各种方法。我已经想通了。我想知道的是,为什么 ajax 调用不在 javascript 函数中时可以完美地工作?只要把它放在一个函数中,我就会得到“$.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>
【问题讨论】:
-
很可能,您包含 jquery 两次,而第二个版本是精简版。
-
你在用wordpress吗?我在网站上看到了至少另一个问题,它是 wordpress auto 的结果,包括一个瘦版本的 jQuery。
-
我一直非常小心不要使用 slim 版本(这就是为什么我还在我发布的源代码顶部包含了第一个 jQuery 包含)。但是在使用 MVC 模板时会创建许多默认文件,所以它可能包含在我不知道的某个地方。我找到了几个地方,我把它们关掉了,所以认为它已经解决了。也许我错了。
-
作为测试,在失败的 ajax 调用之前执行
console.log($.fn.jquery)(在函数内部)。这将确认/拒绝您是否拥有苗条的构建。 -
@Pelle 相当容易 F12 打开您的开发者工具,转到网络选项卡,刷新页面,然后查找对 **/*jquery*.js 文件的请求
标签: javascript jquery ajax model-view-controller