【问题标题】:Problem with making a simple JS XmlHttpRequest call进行简单的 JS XmlHttpRequest 调用时出现问题
【发布时间】:2010-04-20 07:50:27
【问题描述】:

编辑:也许我让这个问题比它应该的更复杂。我的问题是:如何从 JS 对服务器进行 API 调用。

我必须创建一个非常简单的客户端,它对我们的服务器进行 GET 和 POST 调用并解析返回的 XML。我正在用 JavaScript 写这个,问题是我不知道如何用 JS 编程(今天早上才开始研究这个)!

作为初始测试,我正在尝试 ping 到 Twitter API,这是当用户输入 URL http://api.twitter.com/1/users/lookup.xml 并点击提交按钮时调用的函数:

function doRequest() {
    var req_url, req_type, body;
    req_url = document.getElementById('server_url').value;
    req_type = document.getElementById('request_type').value;   
    alert("Connecting to url: " + req_url + " with HTTP method: " + req_type);
    req = new XMLHttpRequest();
    req.open(req_type, req_url, false, "username", "passwd");// synchronous conn
    req.onreadystatechange=function() {
            if (req.readyState == 4) {
                    alert(req.status);
            }
    }
    req.send(null);
}

当我在 FF 上运行它时,我得到一个

访问受限 URI 被拒绝”代码:“1012

Firebug 上的错误。我用谷歌搜索的东西表明这是一个特定于 FF 的问题,所以我切换到 Chrome。在那里,第二个警报出现了,但显示 0 作为 HTTP 状态代码,我觉得这很奇怪。

谁能发现问题所在?人们说这些东西在 JQuery 中更容易使用,但是现在在 JS 语法之上学习 那个 有点太多了。

【问题讨论】:

标签: javascript rest xmlhttprequest


【解决方案1】:

出于安全原因,您不能使用 AJAX 从其他域请求文件。

由于您的 Javascript 未在 http://api.twitter.com 上运行,它无法从 http://api.twitter.com 请求文件。

相反,您可以在您的域上编写服务器端代码来向您发送文件。

【讨论】:

  • 使用 JS 联系 REST API 的正确方法是什么?我在这里尝试进行的调用对于 Java 中的代码来说是微不足道的,我不明白为什么在 JS 中这么难。
  • 这不是难事,只是not allowed。您必须使用 Ajax 替代请求方法,例如 JSONP
  • @Jonathan 和 SLaks,也许我理解错了,但我试图做的与访问服务器上的方法或文件无关,我只是想发送一个 GET 请求到Twitter API。
  • 就浏览器而言,文件和对 API 的 GET 请求之间没有任何区别。
猜你喜欢
  • 2010-10-22
  • 2011-07-24
  • 2021-03-22
  • 2021-02-04
  • 1970-01-01
  • 2011-04-10
  • 2021-08-06
  • 2014-11-27
  • 1970-01-01
相关资源
最近更新 更多