-2

我正在尝试直接使用 XMLHttpRequest 检索 url:

req = new XMLHttpRequest
req.onreadystatechange = -> 
  console.log req.readyState
  if req.readyState == 1
    console.log "sending..."
    req.send
  if req.readyState == 4
    handler(req.response, req.status)
req.open("GET", info.srcUrl, true)
req.responseType = "arraybuffer"

但是我从来没有看到对象转换到1readyState 之外。我错过了什么?

4

2 回答 2

0

来自 Ruby,我没有意识到req.send和之间存在微妙但重要的区别req.send()。正如@RobW 在评论中指出的那样,这个方法也不应该在事件处理程序中调用,而是在代码末尾调用。

于 2013-07-17T16:09:20.920 回答
0

如果您尝试从接收运行脚本的服务器以外的其他来源检索任意资源,则很可能遇到与跨站点脚本相关的安全问题。

除非在非常有限的情况下,您无法从任何其他站点检索资源,但您当前正在查看的页面提供服务的站点除外。

有关说明,请参阅https://developer.mozilla.org/en-US/docs/Web/JavaScript/Same_origin_policy_for_JavaScript?redirectlocale=en-US&redirectslug=JavaScript%2FSame_origin_policy_for_JavaScript

对于我上面提到的有限情况,请参阅https://developer.mozilla.org/en-US/docs/HTTP/Access_control_CORS?redirectlocale=en-US&redirectslug=HTTP_access_control

此外,由于您似乎没有为您的 XMLHTTPRequest 提供错误处理程序,因此您很可能错过了告知您请求失败原因的错误消息。

更新

有关 XMLHTTPRequest 的快速教程,包括如何处理 onError 事件,请访问https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest?redirectlocale=en-US&redirectslug=DOM%2FXMLHttpRequest %2FUsing_XMLHttpRequest

于 2013-07-16T18:37:05.743 回答