为什么我的脚本在调用XMLHttpRequest.send()后停止运行
Why does my script stop running after calling XMLHttpRequest.send()?
我正试图掌握XMLHttpRequest()
对象的工作原理。
如果我删除xhr.send()
, "hi"
将显示。但当它存在时,什么也显示不出来。我真的想把xhr.status
写到屏幕上,但首先我需要知道为什么脚本没有完成执行,即使其余部分不依赖于xhr.send()
之后的响应。
<html>
<head>
<title>Playground</title>
</head>
<body>
<div>
<script>
var xhr = new XMLHttpRequest();
xhr.open("GET","http://www.google.com",false);
xhr.send();
document.write("hi");
</script>
</div>
</body>
</html>
XMLHttpRequest
可作为同步和异步,第三个参数传入函数设置此模式。传递false
意味着设置为同步,例如wait till call finished
改为:
var xhr = new XMLHttpRequest();
xhr.open("GET","http://www.google.com",true);
xhr.send();
document.write("hi");
应该写为"hi"
或者你可以完全删除第三个参数默认为异步
var xhr = new XMLHttpRequest();
xhr.open("GET","http://www.google.com");
xhr.send();
document.write("hi");
您不能向http://www.google.com
发出XHR请求,因为它是不同的来源。如果您打开开发控制台,您可能会看到如下错误:
Uncaught NetworkError: Failed to execute 'send' on 'XMLHttpRequest':
Failed to load 'http://www.google.com/'.
为了发出一个AJAX请求,被请求的域、端口和协议必须与源匹配。
由于脚本的这一行抛出了一个错误,并且调用被设置为不是异步的(如LIUFA所述),下一行将不会被执行。
相关文章:
- 如何使用phaser使html5游戏在移动设备浏览器上运行
- 使用压缩的JavaScript文件(不是运行时压缩)
- Javascript运行php文件,然后下载文件
- chrome扩展:尽管运行了at:documentidle,js脚本还是过早启动
- 我已经创建了一个jquery转盘,并使用if条件来运行和停止转盘
- Angularjs代码未在匿名函数中运行
- jquery设置为使用参数运行
- 如何根据时间运行不同的脚本
- Meteor方法在客户端返回null,在客户端运行的相同方法返回正确的值
- 将文本框链接到由按钮运行的javascript公式
- 为什么不是't运行此Javascript的Chrome
- ng应用程序使脚本无限运行
- 如何在运行时在angular 2中加载外部js脚本
- 与运行长作业(javascript,node.js)的第三方API同步的最佳实践
- JavaScript错误:Microsoft JScript运行时错误:应为对象
- 在终端中运行 JavaScript 时(使用 rhino),如何使用 print() 函数在一行中打印
- 如何使用JS/nightwatchjs并行运行多个测试
- 茉莉花宝石-耙茉莉花:ci dons't运行测试
- 我的HTML按钮没有在Javascript中运行
- 为什么我的脚本在调用XMLHttpRequest.send()后停止运行