2

我有一个休息 url http://server1:8080/platform/collections/123-456-789,它以字节数组的形式返回一个 HTML 文件。

如何使用在 server2 中运行的 Javascript 或 jQuery 获取字节数组响应。我试过了

jQuery.ajax({
        url: "http://server1:8080/platform/collections/123-456-789",
        type: "GET",
        dataType: "html",
        crossDomain: true,
        username: "abcd",
        password: "abcd",
        async: true,
        success: function(data) {
            alert("1");
            alert(data);
        },
        error: function (xhr, ajaxOptions, thrownError) {
            alert("error"+xhr.responseText);
            alert("error"+thrownError);
        }
});

我不进入成功的方法。如何成功获取字节数组响应?

编辑:

甚至使用 javascript 或 jquery 获取字节数组响应的任何其他方式也值得赞赏

4

2 回答 2

1

对于多个服务器(具有不同域),您需要启用CORS以允许跨域 ajax 请求。这应该是可能的,因为两台服务器都在您的控制之下。

关于如何使用 jQuery 接收二进制数据(目前不可能),请参阅http://blog.vjeux.com/2011/javascript/jquery-binary-ajax.html

于 2012-11-28T12:58:23.307 回答
0

CORS 是较新的方法,但 jsonp 可能更容易一些......

使用 JSONP,您需要将 server1 上的文件包装在某种脚本中,以便您可以将 content-type 标头设置为 javascript,然后对文件进行 JSONencode 并将其写入响应。这可以在 PHP 或服务器端 javascript 中用几行代码完成;你会希望脚本最终返回一个包含如下内容的“javascript文件”:

document.getElementById('content-holder').innerHTML="<html>this is my file</html>";

在客户端(从 server2 提供的静态 html 页面)上,您可以放置​​内容持有者:

<div id='content-holder'></div>

然后是从 server1 中提取内容的脚本:

<script type="text/javascript">
var getXsS = function(url)
{
    var ss = 's' + 'cr' + 'ip' + 't';
    var cst = document.getElementsByTagName(ss)[document.getElementsByTagName(ss).length-1];
    var ts = 1*new Date();
    var e = document.createElement(ss);
    e.async=1;
    var tsstr = '_ts1_='+ts;
    if((''+url).indexOf('?')==-1){tsstr='?'+tsstr;}else{tsstr='&'+tsstr;}
    var url2 = url+tsstr;
    e.src=url2;
    cst.parentNode.insertBefore(e,cst);
};
getXsS('http://server1:8080/platform/collections/123-456-789');
</script>

请注意,如果 server1 使用 SSL,则 server2 也必须使用 SSL。

于 2013-08-05T00:23:15.923 回答