如何解决XMLHttpRequest 仅同步工作,异步时不返回
我发出了以下 AJAX 请求:
Javascript:
document.onload = new function() {
xhr.open("GET","http://127.0.0.1/edsa-konfigurator/Ladekantenschutz.php?Marke=true",false);
xhr.send(null);
xhr.onreadystatechange = new function() {
console.log(xhr);
console.log(xhr.responseText);
//everything below can be ignored
var obj = JSON.parse(xhr.responseText);
//doppelte array inhalte aussortieren
uniqueObj = unique(obj);
console.log(uniqueObj);
for (var counter = 1; counter < uniqueObj.length+1; counter++) {
document.getElementById("selection1").options[counter] = new Option(uniqueObj[counter-1],uniqueObj[counter-1]);
}
}
};
PHP:
header("Access-Control-Allow-Origin: *");
header('Content-type: text/html; charset=utf-8');
if(isset($_GET["Marke"])){
$stmt = $db->prepare("SELECT `marke` FROM `selector2`WHERE Freigegeben = :freigegeben");
$stmt->execute([":freigegeben" => "ja"
]);
$results = $stmt->fetchAll();
// In einem Array speichern
foreach ($results as $result) {
$arr[] = [$result["marke"]];
}
// Und mit json_encode() ausgeben
exit(json_encode($arr));
}
当我将它与同步请求一起使用时,代码工作得很好,但是一旦我删除了“false”并因此切换到异步,它就会停止工作。
更多详情: 在同步模式下,响应大约需要 2 秒,但结果正确。
在异步中,响应是即时的,但它只会进入就绪状态 1(显示在控制台中)。
使用 if(xhr.readystage == 4) ... 控制台中没有显示任何有意义的内容,因为它保持在 1。
控制台日志异步:
控制台日志同步:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。