无法使用xhttp.open

时间:2018-07-03 18:35:40

标签: javascript jquery html json ajax

我想使用以下代码打开并读取本地json文件,但控制台向我抛出一条错误消息msg“ jsonTest.html:21无法加载文件:/// C:/ Users / EFUXTIA / Desktop / web /data.json:仅协议方案支持跨源请求:http,数据,chrome,chrome扩展名,https。”这与拒绝访问相同。

我认为data.json的路径出了点问题,但是我找不到一个好的解决方案。

<!DOCTYPE html>
<html>
<head>
	<title></title>
	<meta charset="utf-8" />
	<script>
		function getdata()
		{
			var xhttp = new XMLHttpRequest();

			xhttp.onreadystatechange = function() {
				if(xhttp.readyState==4 && xhttp.status==200)
				{
					var javaobj = JSON.parse(xhttp.response);
					document.getElementById('div1').innerHTML = javaobj.name;
				}
				
			};
			xhttp.open("GET", "file://localhost/C:/Users/EFUXTIA/Desktop/web/data.json", true);

			xhttp.send();
		}

	</script>
</head>
<body>
	<input type = "button" name="name" onclick="getdata()" value="Click" />
	<div id="div1"></div>
</body>
</html>​

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

您不能真正将file:///用于网站,它有很多安全限制,这是有充分理由的。如果要测试页面,请在页面所在的目录中运行一个简单的http服务器,并将http://用于所有资源URL。

file:///协议是一种本地文件系统协议,用于从文件系统中的任意位置将单个资源加载到浏览器中。这意味着它可以访问磁盘上的所有内容,包括密码文件,Windows驱动程序,Unix主目录等。如果在目录中允许file:///,则非常是不安全的混合协议上下文。因此,它无法与XHR一起使用,以这种方式加载的文件本身无法XHR,甚至无法加载大多数相关资源,等等。

基本上:从不使用file:///。用于在浏览器主窗口中将任意文件加载到计算机上。如果您除了“只加载它”外还需要执行其他操作,请不要使用它。