AJAX Success调用已定义的函数

时间:2017-12-03 12:16:11

标签: javascript jquery ajax asynchronous

我在成功时调用外部函数时遇到问题。理想的解决方案是让我也将一些参数传递给函数!

即。 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脚本有关。删除它修复了错误。

3 个答案:

答案 0 :(得分:3)

您正在使用瘦身版的jQu​​ery。它不支持ajax调用。使用以下

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

<强>更新 请查看以下内容 JSfiddle

答案 1 :(得分:-1)

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

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

此外,我发现您的代码中存在一些错误,我试图找出您想要实现的内容并从中创建代码,您应该看看这是否是您想要的

&#13;
&#13;
$(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);
}
&#13;
<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>
&#13;
&#13;
&#13;

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

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

其次,我不知道您使用$.find("portalConsole").text(consoleText);的原因,如果您想更改文字,我会$(".portalConsole").text("text here...")使用.也注意到没有# for obj in ques: print obj.slug_field 在portalConsol之前1}}或ques = Upload.objects.filter(unique_id=tdetail).order_by('?')

答案 2 :(得分:-2)

只需添加上述CDN脚本标记

即可

<script src="https://code.jquery.com/jquery-3.2.1.js" integrity="sha256-DZAnKJ/6XZ9si04Hgrsxu/8s717jcIzLy3oi35EouyE=" crossorigin="anonymous"></script>