XMLHttpRequestObject.send 不发送数据


XMLHttpRequestObject.send does not send the data

我正在运行一个wamp服务器,我正在从中开发一个网页。4个月前,一切正常。但是,现在当我运行页面时,XMLHttpRequestObject.send("data=" + data);不发送数据。

运行 chrome 调试器,我收到消息:

Cross origin requests are only supported for protocol schemes: http, data, chrome-extension, https, chrome-extension-resource. 
Failed to load: 'file:///C:/wamp/www/hello.php'.

通过这篇文章:XMLHttpRequest 无法加载文件。仅 HTTP 支持跨源请求

解决方案是运行本地服务器。 但是,有没有办法仅使用 WAMP 来做到这一点?

错误消息非常明确地说明了您做错了什么 - 您需要指定一个 URL 来发送请求,该 URL 使用上述协议之一:

var xhr = new XMLHttpRequest();
xhr.open('POST', 'http://localhost/hello.php', true);
xhr.send('data=' + data);

你不能指向C:'wamp'www'hello.php,因为这不是Apache为它服务的地方。 如果您使用的是默认配置,则可能需要使用 URL http://localhost/hello.php

至于运行本地服务器,这就是"WAMP"中的"A"。 Apache是一个Web服务器,您可以使用它来提供脚本和资源,例如PHP脚本,它能够解析您从XHR请求中发布的数据。

还值得一提的是,简单地发送字符串并不总是将数据发送到服务器的最佳方式。 根据要发送的内容,可以考虑在xhr.send()调用中使用FormDataBlob对象。