在window.onload函数中说我调用了许多其他方法:
function window.onload(){
method1();
alert("test1");
method2();
alert("test2");
}
所以我的test1方法工作正常,我收到警告“test1”,但是看起来我的代码在方法2上“冻结”,所以没有调用警告“test2”。
这是我的test2方法的样子
function method2(){
alert("testing");
var xhr = new XMLHttpRequest();
xhr.open("GET", "url that i want to call from", true);
xhr.onload = function() {
if (xhr.status==200) {
alert(xhr.responseText);
alert("yay");
}
else{
alert("Aww");
}
}
xhr.send();
}
我不明白的是为什么我甚至没有得到警告“测试”,如果我的代码冻结某处为什么它至少不运行方法中的第一行?
任何人都可以解释为什么会出现在javascript中吗?
感谢
答案 0 :(得分:0)
我一直在关注准备状态变化'事件
<h2>AJAX</h2>
<button type="button" onclick="loadDoc()">Request data</button>
<p id="demo"></p>
<script>
$(document).ready(function () {
loadDoc();
});
function loadDoc() {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function () {
if (xhttp.readyState == 4 && xhttp.status == 200) {
document.getElementById("demo").innerHTML = xhttp.responseText;
alert("yay");
}
};
xhttp.open("GET", "demo", true);
xhttp.send();
}
</script>
{{3}}
根据您提供的信息,我猜您正在遇到浏览器安全问题......
我建议使用jquery为您处理这项工作。在我使用框架的那些年里,jquery中的$(document).ready函数对我来说一直很棒。
如果你不能使用jquery,那么你需要让用户点击一个按钮才能发起你想要的http请求。
此外,如果您需要执行&#39; Awww&#39;您可以将其附加到if语句的操作,但我建议使用if else基于xhttp.readyState值或您的&#39; Awww&#39;会经常重复。