Javascript 跨域ajax请求jquery获取CSV
我想使用跨域AJAX请求获取CSV。我正在使用jquery 我知道我们可以使用JSONP来处理跨域ajax请求,但这里我必须获取CSV而不是JSON 这是一个内部网站,需要登录,所以我不能使用YQL 还有别的办法吗。下面是我的代码Javascript 跨域ajax请求jquery获取CSV,javascript,ajax,jquery,csv,Javascript,Ajax,Jquery,Csv,我想使用跨域AJAX请求获取CSV。我正在使用jquery 我知道我们可以使用JSONP来处理跨域ajax请求,但这里我必须获取CSV而不是JSON 这是一个内部网站,需要登录,所以我不能使用YQL 还有别的办法吗。下面是我的代码 $.ajax({ url: 'http://si-dtp-219:3333/WS/WS/dshbrdData?reportname=Svt', dataType : 'text', callback :
$.ajax({
url: 'http://si-dtp-219:3333/WS/WS/dshbrdData?reportname=Svt',
dataType : 'text',
callback : callbackFunction,
crossDomain : true,
type: 'GET',
timeout: 50000,
success: function(res) {
callbackFunction(JSON.stringify(res));
},
complete: callbackFunction,
error: function(x, t, m) {
if(t==="timeout") {
alert("got timeout");
} else {
console.log(x);
console.log(t);
console.log(m);
}
}
});
对于我们的内部网站,我们经常使用代理脚本来处理这个问题。也就是说,您在内部网中编写一个脚本,代表您提出请求。如果您使用的是PHP,它可能非常简单:
<?php
echo file_get_contents("whatever_url");
?>
然后在Javascript应用程序中,您只需在域内对此页面进行AJAX调用。这样就根本不存在跨域问题(客户端的请求指向其域内的页面,服务器端的请求对其域没有限制)。对于我们的intranet站点,我们经常使用代理脚本来处理此问题。也就是说,您在内部网中编写一个脚本,代表您提出请求。如果您使用的是PHP,它可能非常简单:
<?php
echo file_get_contents("whatever_url");
?>
然后在Javascript应用程序中,您只需在域内对此页面进行AJAX调用。这样就根本没有跨域问题(来自客户端的请求是对其域内的页面的请求,服务器端请求对其域没有限制)。好的,您仍然可以使用JSONPish调用。您应该做的是在URL中添加一个脚本标记,为该值分配一个变量,然后对该数据执行所需操作。您应该使用纯JS而不是jQuery,因为它需要JSON格式
好吧,您仍然可以使用JSONPish调用。您应该做的是在URL中添加一个脚本标记,为该值分配一个变量,然后对该数据执行所需操作。您应该使用纯JS而不是jQuery,因为它需要JSON格式
如果res只是csv文件的内容,有什么问题吗?您使用的是什么服务器端语言?@drim:-这是一个跨域请求,所以我不需要担心服务器端语言。我只需要使用javascript点击url并获取内容。如果我复制响应内容并将其保存到本地,并发出像url:'local.txt'这样的ajax请求,它的工作非常好。CSV不是JavaScript的有效子集,因此JSONP技术将无法工作,除非您将文件保存在一个JS字符串中,并允许将其包装在回调函数中。如果不可能,您将需要使用代理。如果res只是csv文件的内容,有什么问题?您使用的是什么服务器端语言?@drim:-这是一个跨域请求,所以我不需要担心服务器端语言。我只需要使用javascript点击url并获取内容。如果我复制响应内容并将其保存到本地,并发出像url:'local.txt'这样的ajax请求,它的工作非常好。CSV不是JavaScript的有效子集,因此JSONP技术将无法工作,除非您将文件保存在一个JS字符串中,并允许将其包装在回调函数中。如果不可能,您将需要使用代理。我不能使用任何服务器端脚本语言。。我必须使用AJAX获取数据。我相信这意味着你运气不好。@Anupish从技术上讲这仍然是AJAX,你只是对自己的页面而不是原始页面发出请求,并让代理完成请求的第二部分。如果您无法控制自己的服务器端脚本,那么这将更加复杂,而且我不确定是否有令人满意的解决方案。如果您根本无法使用任何服务器代码,有两种方法可以使用AJAX获取跨源数据。1.这依赖于JSON格式的数据-CSV将不起作用!2.数据所在的服务器必须支持。如果服务器已经支持CORS,您就可以回家了。如果没有,请尝试询问服务器所有者是否可以启用它。我不能使用任何服务器端脚本语言。。我必须使用AJAX获取数据。我相信这意味着你运气不好。@Anupish从技术上讲这仍然是AJAX,你只是对自己的页面而不是原始页面发出请求,并让代理完成请求的第二部分。如果您无法控制自己的服务器端脚本,那么这将更加复杂,而且我不确定是否有令人满意的解决方案。如果您根本无法使用任何服务器代码,有两种方法可以使用AJAX获取跨源数据。1.这依赖于JSON格式的数据-CSV将不起作用!2.数据所在的服务器必须支持。如果服务器已经支持CORS,您就可以回家了。如果没有,请尝试询问服务器的所有者是否可以启用它。