我应该如何更改以下代码以使用jsonp加载XML跨域..
$.ajax({
type: "GET",
url: "http://www.w3schools.com/xml/note.xml",
dataType: "xml",
success: function(xml) {
alert('Hi');
}
});
希望我的问题得到解决。
答案 0 :(得分:3)
您无法使用jsonp加载XML,因为必须以某种方式在json中写入数据。
我们假设您当前的数据是这样的:
<address>
<fullname>John Doe</fullname>
<street>1st street</street>
<number>345</number>
<zip>12345</zip>
<city>Nowhere</city>
</address>
你必须用JSON发送它,就像那样:
{
fullname: "John Doe",
street: "1st street",
number: 345,
zip: "12345",
city: "Nowhere"
}
此外,如果您需要通过JSONP接收它,您需要进行另一次修改。假设您发送的请求是这样的:
$.ajax({
type: "GET",
url: "http://www.w3schools.com/json/note.js",
dataType: "jsonp",
success: function(data) {
alert('Hi');
}
});
在调用Web服务时,jQuery将在请求URL中添加名为callback
的参数。
假设生成的网址为:http://www.w3schools.com/json/note.js?callback=callback1234
然后,您的json输出将需要如下所示:
callback1234({
fullname: "John Doe",
street: "1st street",
number: 345,
zip: "12345",
city: "Nowhere"
});
答案 1 :(得分:1)
据我所知,你不能(直接)使用JSONP加载XML数据。
带有JSONP的跨站点AJAX依赖于在动态创建的<script>
标记内执行的Javascript函数调用中包装所需对象,并且没有使用XML执行此操作的机制。
即使JSONP要求远程服务器执行JSON包装 - 输出JSON数据的CGI脚本也不会自动支持开箱即用的JSONP。
如果您的数据实际上是标准FTP服务器上的普通XML文件,那显然是不可能的。
答案 2 :(得分:1)
在某些情况下,无法使用JSONP进行跨域。 请直接使用Jquery或使用XDomainRequest对象查找以下的跨域AJAX请求URL http://rajendrapathi.webs.com/apps/forums/show/14007722-jquery-and-javascript
答案 3 :(得分:0)
我认为如果你想接收JSONP,dataType应该是JSONP。