没有json-data的ajax跨域请求

Posted

技术标签:

【中文标题】没有json-data的ajax跨域请求【英文标题】:Cross-domain request with ajax without json-data 【发布时间】:2012-12-19 01:01:48 【问题描述】:

我想使用 ajax 进行跨域请求以获取非 JSON(!) 数据(CSV 文件)。我正在使用以下代码:

$.ajax( “url”:数据集.url, “数据类型”:“文本”, “跨域”:真 ).done(函数(数据) );

但由于跨域限制,它无法正常工作。当我将数据类型设置为“jsonp”时,它也不起作用,因为数据将被解释并且我得到语法错误。

有什么解决方法吗?谢谢。

【问题讨论】:

我曾经有过类似的问题。检查***.com/questions/12611469/… 使用您的数据集在服务器上启用CORS。 您可以将 csv 数据包装到其他域服务器上的 jsonp 响应中,或者在您的服务器上设置一个脚本,该脚本仅获取并返回 csv 数据(代理类型)。跨度> 您可以使用 CORS,但请记住,IE 缺乏对它的支持。 IE7 根本不支持它,而 IE8-10 你必须自己处理请求(没有$.ajax,除非你扩展它),因为 IE 对 CORS 请求使用不同的 xhr 对象。最好只从您的服务器发出请求。 谢谢你们!我不想使用 YQL 和 CORS,所以我需要编写一个代理脚本对吗? 【参考方案1】:

您有以下选择:

    使用服务器端代理 JSONP,将csv包装成jsonp响应 使用 CORS(检查跨浏览器支持)

【讨论】:

以上是关于没有json-data的ajax跨域请求的主要内容,如果未能解决你的问题,请参考以下文章

解决携带身份信息的跨域请求

允许跨域 ajax 请求中的标头

ajax 跨域请求

为什么form表单提交没有跨域问题,但ajax提交有跨域问题?

为什么form表单提交没有跨域问题,但ajax提交有跨域问题?

ajax本地跨域请求以及解决方法