小编joa*_*des的帖子

AJAX请求第一次不起作用,但之后工作

我正在制作一个简单的功能,因为它在w3schools官方网站上显示.我正在尝试运行AJAX请求的功能.

我想这一切都运行良好,除了代码只在第一次失败后才运行.我的意思是,让我们说你刚刚第一次来到我的网站,你尝试第一次提交,它只是刷新页面,没有任何反应.

据我所知,我尝试使用alert每行中的函数进行调试,以查找是否真的发出了请求.我发现readyState在代码运行的第一次(从每个浏览器,不同的计算机)中跳转从1到4,但下次它将呈现readyState 1,2,3和4并且BANG它将工作并提交.

我想过饼干周围的东西?但我仍然想知道它的原因是什么.伙计们,请帮忙.

Javascript函数代码(head head标签内)

function sendForm() {

    var criarRequest = new XMLHttpRequest();
    criarRequest.onreadystatechange = function() {  
        if (criarRequest.readyState == 4 && criarRequest.status == 200) {
            document.getElementById("contacts").innerHTML = criarRequest.responseText;
        } 
    };
    //var loading  = document.getElementById("contacts").innerHTML = "A enviar...";
    var inputEmail = document.getElementById("email").value;
    var inputMensagem = document.getElementById("mensagem").value;  
    criarRequest.open("POST", "sendEmail.php", true);
    criarRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    criarRequest.send("email="+inputEmail+"&mensagem="+inputEmail);
}
Run Code Online (Sandbox Code Playgroud)

HTML代码表单/输入

<form>
    <input style="width:220px; height:39px" type="text" id="email" placeholder="Email" /> 
    <br  /> <br  />
    <textarea style="width:220px; height:100px" id="mensagem" placeholder="Mensagem"></textarea>
    <br  /> …
Run Code Online (Sandbox Code Playgroud)

javascript ajax xmlhttprequest readystate

0
推荐指数
1
解决办法
2525
查看次数

JavaScript Async/Await 逻辑表现为同步

如果我理解正确的话,用关键字async声明的函数应该返回一个承诺。对于async3函数,我们有 10 亿次迭代,这使得返回值需要更长的时间。分析下面的代码,我期望发生的是,通过调用sync1sync2函数,立即登录控制台,稍后,async3函数日志就会出现。但是,我注意到,sync1sync2函数仅在async3结束后才记录。难道async3函数不应该在另一个线程上或在事件循环之外运行,而不阻止运行时调用的其他函数的执行吗?

function sync1() {
  console.log(1);
}

function sync2() {
  console.log(2);
}

async function async3() {
  let iteration = 0;
  let number = 0;
  while (iteration <= 1000000000) {
    number = iteration;
    iteration++;
  }
  return number;
}

sync1();
sync2();
async3().then((val) => console.log(val));
Run Code Online (Sandbox Code Playgroud)

你能解释一下为什么它会这样吗?我缺少什么?

我所期望的:

sync1(); // console logged immediately
sync2(); // console logged immediately
async3().then((val) => console.log(val)); // console logged moments later
Run Code Online (Sandbox Code Playgroud)

目前发生的事情:

     同步1(); …

javascript async-await es6-promise

0
推荐指数
1
解决办法
226
查看次数