ajax给出空白的回应

时间:2012-09-03 09:28:28

标签: javascript jquery

我在位置http://localhost:8080/cleo-primer/rest/elements/search?uid=1&query=facebook

中存储了xml内容
<element-list><element><term>facebook</term><name>Bing Facebook</name></element></element-list>

我发送了一个获取请求

 $.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选项卡

1 个答案:

答案 0 :(得分:1)

您正在进行不允许的跨域通话。您正在致电: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 *允许所有)

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

要完成的其他几个选项......

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