我遇到了这个问题:
我有一个django(python)服务器,它在localhost:8000
上提供XML文件我有一个在localhost:8080上使用tomcat的liferay项目,需要调用这个XML文件(在带有ajax的javascript中)
它调用文件,但永远不会得到它们。
我需要为tomcat获取此文件做什么?
先谢谢。
编辑:
这是我的要求:
$.ajax({
type: 'GET',
url: "http://127.0.0.1:8000/charger/entreprise/",
dataType: "xml",
crossDomain : true,
success: function(xml){
alert(xml);
}
});
这是我的请求标题:
Host 127.0.0.1:8000
User-Agent Mozilla/5.0 (X11; Linux i686; rv:8.0) Gecko/20100101 Firefox/8.0
Accept application/json, text/javascript, */*; q=0.01
Accept-Language fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding gzip, deflate
Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7
Connection keep-alive
Referer http://localhost:8080/web/guest/home
Origin http://localhost:8080
事实上,我想知道问题是否来自javascript,我认为是因为服务器。
在尝试了许多不起作用的解决方案之后,我终于解决了我的问题 你们是对的,JSONP是解决方案,即使我不得不将它改编为django,以及我的具体问题,这根本不容易。
答案 0 :(得分:2)
您必须使用JSONP(JSON Padding)来执行跨域AJAX请求。 }
有关JSONP的信息,请参阅此链接
http://www.ibm.com/developerworks/library/wa-aj-jsonp1/
jquery也有JSONP功能。在jquery文档中检查出来
答案 1 :(得分:1)
默认情况下,浏览器会阻止跨域请求..如果您想了解更多详细信息,请查看JSONP。
答案 2 :(得分:1)
如果跨域ajax是您唯一的问题,可以使用JSONP。
各种JS框架已经实现(例如,查找JQuery AJAX的'crossDomain'设置)</ p>
尝试为您的AJAX请求设置dataType: "jsonp xml"
。
答案 3 :(得分:1)
正如其他人所说,JSONP将解决您的问题。它允许跨域AJAX功能。
另一种方法是在Django站点和Tomcat站点前使用Web服务器并获取代理请求。例如,您的主站点在localhost:80上运行,并根据URLS将其代理到相应的后端服务器。这样,从客户端和JavaScript的角度来看,HTML和JSON请求将转到同一台服务器。