0

我正在创建一个页面,该页面使用 javascript 从 Web 调用动态内容,并且显然遇到了 SOP(同源策略)的障碍我知道这在生产页面上不起作用,因为需要在服务器上检查调用但是我有它实际上可以工作但我无法访问数据。我真的很想知道这是否可能。

下面的代码将 URL 添加到文件中:

var url = 'http://theSite.com/?query=' + userInput + '&othercode';
var script = document.createElement('script');
script.setAttribute('src', url);
script.setAttribute('type', "application/json");
script.setAttribute('id', "special");
document.getElementsByTagName('body')[0].appendChild(script);

这会将以下内容添加到我的 html 中:

<script src="http://theSite.com/?query=userInput&othercode" type="application/json" id="special"></script>

现在的问题是:如何访问结果数据?我得到一个 JSON 脚本,但不知道如何将它附加到 Javascript 中的变量或使用它!

代码以这种基本格式出现:

{"count":5,"results":[{"name":"value","id":"value2", ..... }], ...  "code":200}

如何访问数据或将其分配给变量?

(我还没有尝试过 jQuery,并且知道它可能会更容易,但如果有人可以帮助处理这段代码,那就太好了,而不是尝试在 jQuery 中再次执行所有这些操作)。

4

1 回答 1

1

您需要控制您正在调用的服务 ( theSite.com)。一种选择是让它返回 JSONP 而不是 JSON:

dataCallback({"count":5,"results":[{"name":"value","id":"value2", ..... }], ...  "code":200});

或者,将您的脚本放在由iframe提供的服务中theSite.com,并用于postMessage将其结果传达回您的窗口。

否则......好吧,你正在做的正是 SOP 想要阻止的事情,所以机会很严峻,AFAIK。

哦,还有一个选择:对您的服务器进行 AJAX 调用,这将进行服务调用并将数据传递给您。服务器不像客户端那样受到限制。

于 2012-01-01T15:35:47.760 回答