是否可以使用ajax / javascript原型解析远程文件

时间:2011-10-17 23:22:57

标签: javascript parsing prototypejs remote-access

我想解决这个难题,但文件驻留在远程服务器上。我如何解析此文件,因为我一直收到此错误。

XMLHttpRequest无法加载http://www.weebly.com/weebly/publicBackend.php。 Access-Control-Allow-Origin不允许原点http://mysite.com。 拒绝获得不安全的标题“X-JSON”

以下代码

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
        <title>Untitled Document</title>
        <script type="text/javascript" src="prototype.js"></script>
        <!-- Puzzle starts here -->
<script type='text/javascript'>

  // Note: there may be some unfinished code here, that needs finishing...

  // You should probably try to get this function working...
  function solvePuzzle() {

        new Ajax.Request('http://www.weebly.com/weebly/publicBackend.php', {
          parameters:{
            pos: 'solvepuzzle'
          },
          onSuccess:handlerSolvePuzzle,
          onFailure:function() { alert('Transmission error. Please try again.'); }
        });

  }

  function handlerSolvePuzzle(t) {


        var responseText = t.responseText;
        responseText = responseText.replace(/\n/, "");

        if (responseText.match(/!!$/)) {

          alert("Oops: "+responseText);

        } else {

          // Still need to decode the response

          // Once the response is decoded, we can fire off the alert
          // giving the user further instructions
          //alert(responseText);
          //alert('To complete the challenge, '+t.responseText);

        }

  }

</script>
    </head>
    <body>

<input type="button" onclick="solvePuzzle()" value="hello"/>
    </body>
</html>

3 个答案:

答案 0 :(得分:1)

Chrome和Firefox的开发者工具允许您即时修改JS。

如果您使用的是Chrome,请转到菜单View-&gt; Developer-&gt; JavaScript控制台打开控制台。从页面源复制js。改变它。然后将更改的javascript函数粘贴到控制台中。点击进入。然后开始输入'solvePuzzle();'点击进入。你会看到回复。

对于Firefox,您需要下载Firebug插件。

答案 1 :(得分:0)

由于源策略相同,您无法通过JavaScript执行此操作:https://developer.mozilla.org/en/Same_origin_policy_for_JavaScript。如果此weebly站点支持某种JSON API,则可以使用JSONP:http://en.wikipedia.org/wiki/JSONP。除此之外,由于客户端的安全限制,您可能最好通过服务器端与此站点进行交互。

答案 2 :(得分:0)

考虑在“mysite.com”上安装HTTP隧道,以便浏览器不必直接访问“weebly.com”。