【问题标题】:AJAX Success call a defined functionAJAX成功调用一个定义的函数
【发布时间】:2018-05-17 00:38:54
【问题描述】:

我无法成功调用外部函数。理想的解决方案是让我也将一些参数传递给函数!

success: writeToConsole("successful");

Javascript:

$(document).ready(function () {
  $(".portalControls").find(".syncButton").click(triggerSync);    
});

function triggerSync(e) {
  e.preventDefault();
  $.ajax({
    type: "GET",
    url: "sync",
    dataType: "text",
    success: writeToConsole,
      error: writeToConsole
    }
  });
}

function writeToConsole(consoleText) {
  $.find("portalConsole").text(consoleText);
}

HTML:

<!-- Scripts -->
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
<script type="text/javascript" src="/js/scripts.js"></script>

我得到的错误:"Uncaught TypeError: $.ajax is not a function"。 我从来没有在我的服务器上收到请求。

编辑:问题与在另一个页面上有一个 jQuery slim 脚本有关。删除它修复了错误。

【问题讨论】:

  • 定义成功函数没有问题。你的问题是"Uncaught TypeError: $.ajax is not a function".
  • 确保在此脚本之前加载 Jquery
  • @KumarShubham 怎么样?
  • @KumarShubham $(document).ready() 应该在 Ajax 方法之前很久就抛出错误。这不是脚本的位置,它只是错误的库。
  • @Josh 谷歌搜索您的错误(使用双引号表示完全匹配)会产生 大量 的点击量,可以准确解释问题所在。请始终先搜索。

标签: javascript jquery ajax asynchronous


【解决方案1】:

您正在使用 jQuery 的精简版。它不支持 ajax 调用。使用以下

<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>

更新 看看以下 JSfiddle

【讨论】:

  • 作为对他的回答的一种补充解释,stackoverflow.com/questions/35424053/…这个链接正在解释 jquery-slim 版本和普通版本之间的区别
  • 我切换到这个了,还是不行。同样的错误。
  • @Josh:看看 jsfiddle
  • @santoshsingh 我检查了,谢谢。由于某种原因,它仍然对我不起作用,并且出现完全相同的错误。它在开发工具上显示了正确的脚本,不知道为什么它不起作用。
  • 试试这个
【解决方案2】:

正如@Santosh 所说,请确保在脑海中添加以下代码:

<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>

我还发现你的代码中有一些错误,我试图找出你想要实现的目标并从中制作代码,你应该看看这是你想要的

$(document).ready(function() {


  $(".portalControls").find(".syncButton").click(triggerSync);

});

function triggerSync(e) {
  e.preventDefault();
  $.ajax({
    type: "GET",
    url: "sync",
    dataType: "text",
    success: writeToConsole("fine"),
    error: writeToConsole("error")
  });
}

function writeToConsole(consoleText) {
  $(".portalConsole").text(consoleText);
}
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
<div class="portalControls">
  <button class="syncButton">
click
</button>
</div>
<div class="portalConsole">

</div>

对于我首先发现的问题,这里还有一个}

    success: writeToConsole,
    error: writeToConsole
}
^
});

其次,我不知道你为什么使用$.find("portalConsole").text(consoleText);,如果你想更改文本,我会使用$(".portalConsole").text("text here...") 还要注意在portalConsol 之前没有.#

【讨论】:

    【解决方案3】:

    只需添加上面的CDN脚本标签

    &lt;script src="https://code.jquery.com/jquery-3.2.1.js" integrity="sha256-DZAnKJ/6XZ9si04Hgrsxu/8s717jcIzLy3oi35EouyE=" crossorigin="anonymous"&gt;&lt;/script&gt;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-23
      • 1970-01-01
      • 2012-07-27
      • 2017-01-24
      • 1970-01-01
      • 2013-08-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多