【问题标题】:ajax giving blank responseajax给出空白响应
【发布时间】:2012-08-28 00:47:26
【问题描述】:

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

<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);});

但这给了我一个空白响应,当我使用我的萤火虫检查时,它显示 XML Parsing Error: no element found Location: moz-nullprincipal:{1e7688d3-7b3c-43ae-9142-5b183a7cbfda} 第 1 行,第 1 列: 在 XML 选项卡内

【问题讨论】:

  • 你的 xml 内容是什么样的?
  • 我已经在上面的问题中添加了它
  • 您的 XML 是否有文档类型?例如。 - 它需要以 XML 的形式呈现,具有正确的 headers/content-type petefreitag.com/item/381.cfm
  • 你的内容类型标题是什么?
  • these headers 更重要(请求/响应)

标签: javascript jquery


【解决方案1】:

您正在执行不允许的跨源调用。您的电话来自:http://localhosthttp://localhost:8080。调用没有执行,也不会有响应。 Chrome/Safari 会在控制台显示类似这样的错误:

XMLHttpRequest 无法加载 http://targeturl Origin http://localhost 不允许 Access-Control-Allow-Origin。

更多信息: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 代理 将端口 8080 上的位置转发(映射)到不同的端口(如默认端口 80) 我已经发布了一个 question/answer 关于不久前……
  • 你也可以使用 jsonP(它不是 xml 而是 json)使用通过脚本标签加载资源的技术,如果你的 json 适合它,你可以加载 json。 (包装它一个回调函数调用)
  • 如果您不能这样做,您唯一的选择就是代理脚本。代理脚本是一种中间件。您向脚本发出请求,脚本获取数据并将其返回给您。例如php proxy。你可以在 asp、jsp、flash 甚至 java applet 中做同样的事情。

【讨论】:

  • 这可能是问题..会让你知道
猜你喜欢
  • 2015-07-01
  • 1970-01-01
  • 2015-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多