gpt4 book ai didi

javascript - 我如何使用 XDomainRequest?尝试访问 JSON 跨域 Cors 适用于除 IE 以外的所有内容

转载 作者:行者123 更新时间:2023-11-30 05:39:29 24 4
gpt4 key购买 nike

我编写了一些访问 JSON 文件的代码,提取对象并使用 jquery 附加 html 这是使用 CORS 完成的。这在除 IE 8 和 9 之外的所有版本中都非常有效。

我读到 XDomainRequest 是完成这项工作的方法,但我不知道如何做。感谢任何帮助。

请不要担心 html1、click1 等 - 在完整文件中一切正常。我只需要 XDomainRequest 方面的帮助。

if(window.XDomainRequest){
var xdr = new XDomainRequest();

xdr.open("get", "[link_to_JSON_on_different_server]");

xdr.send();
} else {
$.getJSON("[link_to_JSON_on_different_server]",function(data){
if (click2){
var href2 = click2 + encodeURIComponent(data.fuse[0].link);

}else{
var href2 = data.fuse[0].link;
}

if (click3){
var href3 = click3 + encodeURIComponent(data.fuse[1].link);
}else{
var href3 = data.fuse[1].link;
}
$('#title').append('<a href="'+href2+'">'+data.fuse[0].title+'</a>');
$('#favicon').append('<img style="padding-right:10px;max-width: 16px;" src="http://'+data.fuse[0].domain+'/favicon.ico"> '+data.fuse[0].domain+' ');
$('#content').append(data.fuse[0].content);

$('#read').append('<a href="'+href2+'">Read More ></a>');

$('#title1').append('<a href="'+href3+'">'+data.fuse[1].title+'</a>');
$('#favicon1').append('<img style="padding-right:10px;max-width: 16px;" src="http://'+data.fuse[1].domain+'/favicon.ico"> '+data.fuse[1].domain+' ');
$('#content1').append(data.fuse[1].content);
$('#read1').append('<a href="'+href3+'">Read More ></a>');
});
}

编辑:

我不能使用 JSONP。

我没有收到错误。我的问题是如何使用 XDomainRequest 提取数据,就像我使用 getJSON 一样?

更新代码:

if(window.XDomainRequest){// 1. Create XDR object: 
var xdr = new XDomainRequest();

xdr.onload = function() {
var responseText = xdr.responseText;
// TODO handle success response here.
obj = JSON.parse(xdr.responseText);
$('#title').append('<a href="'+href2+'">'+obj.fuse[0].title+'</a>');
alert('success');
};

xdr.onerror = function() {
// The request has failed. No specific information will be provided by XDR unfortunately.
alert('fail');
};

xdr.open("get", "[link_to_JSON_on_different_server]");
xdr.send();
} else {
$.getJSON("[link_to_JSON_on_different_server]",function(data){
if (click2){
var href2 = click2 + encodeURIComponent(data.fuse[0].link);

}else{
var href2 = data.fuse[0].link;
}

if (click3){
var href3 = click3 + encodeURIComponent(data.fuse[1].link);
}else{
var href3 = data.fuse[1].link;
}
$('#title').append('<a href="'+href2+'">'+data.fuse[0].title+'</a>');
$('#favicon').append('<img style="padding-right:10px;max-width: 16px;" src="http://'+data.fuse[0].domain+'/favicon.ico"> '+data.fuse[0].domain+' ');
$('#content').append(data.fuse[0].content);
$('#read').append('<a href="'+href2+'">Read More ></a>');

$('#title1').append('<a href="'+href3+'">'+data.fuse[1].title+'</a>');
$('#favicon1').append('<img style="padding-right:10px;max-width: 16px;" src="http://'+data.fuse[1].domain+'/favicon.ico"> '+data.fuse[1].domain+' ');
$('#content1').append(data.fuse[1].content);
$('#read1').append('<a href="'+href3+'">Read More ></a>');
});
}

最佳答案

您似乎不确定在使用 XDomainRequest 时如何获取服务器响应的句柄,因为我在您的代码中没有发现任何错误。正如我在评论中提到的,XDomainRequest 的 API 是 XMLHttpRequest 提供的 API 的一个子集。因此,要获取响应,您的代码应如下所示:

var xdr = new XDomainRequest(); 

xdr.onload = function() {
var responseText = xdr.responseText;
// TODO handle success response here.
};

xdr.onerror = function() {
// The request has failed. No specific information will be provided by XDR unfortunately.
};

xdr.open("get", "[link_to_JSON_on_different_server]");
xdr.send();

关于javascript - 我如何使用 XDomainRequest?尝试访问 JSON 跨域 Cors 适用于除 IE 以外的所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21582006/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com