程序问答   发布时间:2022-05-31  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了使用 Ajax 时,我仍然无法使回调工作。它似乎没有等待回调,我做错了什么?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决使用 Ajax 时,我仍然无法使回调工作。它似乎没有等待回调,我做错了什么??

开发过程中遇到使用 Ajax 时,我仍然无法使回调工作。它似乎没有等待回调,我做错了什么?的问题如何解决?下面主要结合日常开发的经验,给出你关于使用 Ajax 时,我仍然无法使回调工作。它似乎没有等待回调,我做错了什么?的解决方法建议,希望对你解决使用 Ajax 时,我仍然无法使回调工作。它似乎没有等待回调,我做错了什么?有所启发或帮助;

所以我一直在关注这些帖子:here、and here 等

但我仍然得到“未定义”作为输出,并且它立即出现,所以我认为它不会等待回调。

我一直在努力解决这个问题。我就是不明白。我相信我理解回调的概念,但在实践中,我不理解所有这些函数的语法。我几乎完全按照这些帖子,唯一的区别是我如何使用 buttonClick。我真的很感激一些帮助让这个工作。我已经简化了 CodePen here 和下面的代码。

有人可以指导我吗?

<button onclick="buttonClick()">Click Me</button>
<span ID="output"></span>

<script
  src="https://code.jquery.com/jquery-3.5.1.min.Js"
  integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0="
  crossorigin="anonymous"></script>

<script type="text/JavaScript">

function buttonClick() {
    document.getElementByID('output').INNERHTML=getHTML(myCallBACk);
}

function getHTML(callBACk){
    $.AJAX({
        url: 'https://cors-anywhere.herokuapp.com/https://www.Google.com/',success: callBACk
    })
}
    
function myCallBACk(result){
    console.log(result.slice(0,100))
    return result.slice(0,100)
}

解决方法

您的问题是 getHTML() 不会阻塞。它立即返回 undefined,而不是等待函数的结果。您可以使用以下异步模式来解决您的问题。我建议您查看async code on MDN。

async function buttonClick() {
  const html = await getHTML(myCallBACk);
  document.getElementById('output').innerHTML = html;
}

async function getHTML(callBACk) {
  const result = await $.ajax({
    url: 'https://cors-anywhere.herokuapp.com/https://www.google.com/'
  });
  return callBACk(result);
}

您也可以使用 Promise,但阅读起来会有点困难。这里我不推荐回调(上面代码中的 myCallBACk 是不必要的,即使它确实有效)。

,
<button onclick="buttonClick()">Click Me</button>
<span id="output"></span>

<script
  src="https://code.jquery.com/jquery-3.5.1.min.js"
  integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0="
  crossorigin="anonymous"></script>

<script type="text/javascript">
function getHTML(callBACk,err){
    $.ajax({
        url: 'https://cors-anywhere.herokuapp.com/https://www.google.com/',error: err,success: callBACk
    })
}

function buttonClick() {
    getHTML(function(data){
        document.getElementById('output').innerHTML=data;
    },function(xhr,status,err){
        document.getElementById('output').innerHTML='SERVER ERROR!';
        console.log(err+',status:'+status)
    });
}
</script>

您立即将输出元素设置为调用的返回 - 您需要等待数据在回调中准备就绪。

大佬总结

以上是大佬教程为你收集整理的使用 Ajax 时,我仍然无法使回调工作。它似乎没有等待回调,我做错了什么?全部内容,希望文章能够帮你解决使用 Ajax 时,我仍然无法使回调工作。它似乎没有等待回调,我做错了什么?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:使用