【问题标题】:Can't read JSON response from server无法从服务器读取 JSON 响应
【发布时间】:2012-12-07 16:19:34
【问题描述】:

我正在开发一个向网站发送一些数据的网络应用程序。该网站将数据更新到其数据库并返回一个替换我的 webapp 页面的 json 数组。我正在使用 ajax 进行查询。我需要知道如何防止我的网页被覆盖。服务器不是我的,所以可能存在同源策略问题。
我检查了xmlhttp.readystatexmlhttp.status,它们分别是 4 和 0。根据 stackoverflow 上的一些帖子,由于原始策略而出现 0 状态,但我无法为此找到解决方案,因为通常有此问题的人可以访问服务器端编程的更改。
我想读取 json 并为我的应用程序提取值,但如果我使用 xmlhttp.responseText,服务器会返回一个空白字符串。

非常感谢任何帮助。
谢谢

我的代码:

function sendAndReceive() {

    var xmlhttp;
    xmlhttp = new XMLHttpRequest();

    xmlhttp.onreadystatechange = function () {
        document.getElementById("postevent").innerHTML = "state changed";
        document.getElementById("postevent").innerHTML = "" + xmlhttp.readyState + " " + xmlhttp.status;
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
            document.getElementById("postevent").innerHTML = "success response";
            document.getElementById("postevent").innerHTML = "this is it" + xmlhttp.responseText;
        }
    }

    var url = "http://simple.ap.ernet.in/api/home/resource.php/resource/node?";
    url += "key=" + document.getElementById("key").value + "&";
    url += "datasetId=" + document.getElementById("datasetId").value + "&";
    url += "localId=" + document.getElementById("localId").value + "&";
    url += "nodeName=" + document.getElementById("nodeName").value + "&";
    url += "nodeDesc=" + document.getElementById("nodeDesc").value + "&";
    url += "lat=" + document.getElementById("lat").value + "&";
    url += "long=" + document.getElementById("long").value;

    document.getElementById("postevent").innerHTML = url;
    xmlhttp.open("POST", url, true);
    xmlhttp.send();
}

【问题讨论】:

  • 我不明白你的问题:你知道你不能这样做,因为同源政策所以你到底在问什么?
  • 我在问是否有解决方法,因为我觉得我不应该是唯一第一次这样做的人。
  • 您可以编辑您的问题以显示您尝试过的内容吗?

标签: javascript html json


【解决方案1】:

唯一已知的解决方法是让浏览器认为只有一个来源。最简单的方法是在您自己的服务器上放置一个代理,中继到另一台服务器。如果您自己的服务器在 Apache 中,您可以使用mod_proxy(请参阅this question)。

但请注意,如果其他服务器不允许跨域请求,则这样做可能违反其政策。如果它是一个大服务器,它很可能会检测到它并禁止你的服务器的 IP。

【讨论】:

  • 我已经阅读了有关 mod_proxy 和其他问题的信息。我找不到任何可以解决我的问题的东西。变通办法解决了 apache,所以对我没有用。
猜你喜欢
  • 2012-03-30
  • 2015-06-28
  • 1970-01-01
  • 1970-01-01
  • 2016-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-25
相关资源
最近更新 更多