ajax给出空白的回应

我有一个xml内容存储在该位置, http://localhost:8080/cleo-primer/rest/elements/search?uid=1&query=facebook

 facebookBing Facebook 

我发送了一个get请求

  $.get('http://localhost:8080/cleo-primer/rest/elements/search', { uid: 1, query: request.term }, function(responseData){alert(responseData);}); 

但这给了我一个空白的响应,当我使用我的firebug检查时,它显示XML解析错误:找不到元素位置:moz-nullprincipal:{1e7688d3-7b3c-43ae-9142-5b183a7cbfda}第1行,第1列:内部XML标签

您正在进行不允许的跨域呼叫。 您正在呼叫: http://localhosthttp://localhost:8080 。 呼叫未执行,将无响应。 Chrome / Safari会在控制台中显示如下错误:

XMLHttpRequest无法加载http://targeturl Access-Control-Allow-Origin不允许使用原始http://localhost

更多信息: http : //en.wikipedia.org/wiki/Same_origin_policy#Origin_determination_rules

如果您可以对后端进行修改,使其发送正确的标题,将解决您的问题…( Access-Control-Allow-Origin yourdomainAccess-Control-Allow-Origin * for allow all)

更多信息: http : //enable-cors.org

其他几个选项要完整……

  • 如果您使用apache:您可以使用apache代理将端口8080上的位置转发(映射)到另一个端口(如默认端口80)我刚刚发布了一个关于它的问题/答案 …
  • 您也可以使用通过脚本标签加载资源的技术来使用jsonP (它不是xml而是json),如果json适应它,您可以加载json。 (包装一个回调函数调用)
  • 如果你不能这样做,你唯一的选择就是代理脚本 。 代理脚本是一种中间件。 您向脚本请求脚本获取数据,并将其返回给您。 例如php代理 。 你可以在asp,jsp,flash甚至java applet中做同样的事情。