我正在尝试将xml从另一台服务器读入网页,我认为我的问题是同源策略,因此是跨域问题。
我有一点谷歌搜索,似乎jsonp是前进的方式。 根据我在stackoverflow和其他网站上找到的一些例子,这就是我所拥有的,它不会用xml“命中”服务器。我可以在浏览器中查看xml。
$(document).ready(function(){
$.ajax({
type: 'GET',
dataType: 'jsonp',
url: 'http://192.168.0.106:8111/getconfiguration?',
success: function (xml)
{ //do stuff with received xml
}});
有什么建议吗?请记住,我是关于JS / JQuery的新手; o)
答案 0 :(得分:3)
如果您无法访问服务器(例如,如果您正在使用api),则可以使用 YQL将您的XML转换为jsonp并使用自定义的自定义YQL url(其中嵌入了类似SQL的语句)从浏览器查询yahoo服务器。这是一个例子(对于zillow api):
$('document').ready(function(){
$.ajax({
url: 'http://query.yahooapis.com/v1/public/yql?q=select * from zillow.search where address = "1835 73rd Ave NE" and citystatezip = "98039" and zwsid = "X1-ZWz1cse68iatcb_13bwv"&format=json&diagnostics=true&env=http://datatables.org/alltables.env&callback=mydata',
jsonpCallback: "mydata",
success: function(results) {
console.log(results.query.results.searchresults.response.results.result.zpid);
},
dataType: 'jsonp'
});
});
答案 1 :(得分:1)
如果您可以访问在远程服务器上生成XML的代码,则可以将整个内容包装在jsonp中。
JSONP是一种通过使用<script>
标记获取数据而不是尝试远程提取信息来绕过同源策略的方法。
在getconfiguation
脚本中,你会有类似
callback("SERVER GENERATED XML/JSON DATA GOES HERE");
远程调用指定回调
例如,如果你的远程脚本是php,你会看起来像这样:
<?php
// getconfiguration.php
echo "$_GET['callback']($configuration_data);"
?>
然后运行您在问题中提供的AJAX。 实际上这样做是动态地将脚本标记插入到页面中,如下所示:
<script src="http://192.168.0.106:8111/getconfiguation.php?callback=???"></script>
jquery填写了???为您提供一些独特的包装器,它为您的成功回调生成了