小编典典

如何使用数据类型“文本”在jQuery中进行跨域Ajax?

ajax

在我的javacript函数中,我将此称为ajax。它工作正常,但仅当我从firebird服务器访问网页时才有效。我的testing服务器上有相同的代码。Ajax要求下载一些文件,但是只有firebird服务器才向我们的客户端提供其IP注册,以便能够在那里进行scp。如果我从测试服务器访问php文件,则需要执行相同的操作。所有服务器都在Intranet内。

  • 有可能使用dataType text这样做吗?
  • 我需要在服务器端进行任何更改吗?

ajax呼叫:

url = "https://firebird"+path+"/tools.php?";

jQuery.ajax({
    type: 'get',
    dataType: 'text',
    url: url,
    data: {database: database_name, what: 'download', files: files, t: Math.random() },
    success: function(data, textStatus){
        document.getElementById("downloading").innerHTML+=data;
    }
});

更新1

我的小型Web应用程序还原了数据库,因此可以对它们进行测试。现在,我想对其进行增强,以便可以连接到我们的客户并下载特定的备份。我们的客户只允许firebird服务器连接到他们的网络。但是我有自己的服务器专用于testing。因此,每次我要下载数据库时,都需要连接firebird。我的Web应用程序的源以及包含所有备份的文件夹都安装在服务器firebird和上的相同位置testing。现在,我的解决方案(用于下载)有效,但只能从firebird中获得。我基本上只工作在testing服务器上。

更新2

我打了两个ajax电话。一种是纯jQuery调用(我想我可以将任何解决方案都应用到此方法上),另一种是jsTree的ajax调用。我为此提出了一个新问题。在我看来,我喜欢I have to@zzzz的选项b)。


阅读 198

收藏
2020-07-26

共1个答案

小编典典

您有以下选择

a)您使用jsonp类型作为数据类型,但这涉及在服务器端进行更改以将数据作为json而不是txt传递回。

{
  "text":<your current text json encoded> 
}

在您的js端,您可以将其用作response.text; 话虽这么说,如果您正在从其他域的sm上获取文本文件,那么我不确定更改代码有多么容易。

b)另一个选择是您在服务器上编写一个处理程序/端点,即在您的域内,该域将向该第三个域发出HTTP请求,以获取文件,然后将文件发送回客户端,并且现在,您的客户端与仅域,您可以控制所有内容。因为大多数年份的问题都是基于红宝石的,所以这里有一个例子:

req = Net::HTTP.get_response(URI.parse('http://www.domain.com/coupons.txt'))

@play = req.body

您可以在此处找到有关内容的更多详细信息

希望这可以帮助。

2020-07-26