【问题标题】:jQuery.get() method doesn't workjQuery.get() 方法不起作用
【发布时间】:2013-05-09 03:10:34
【问题描述】:

我正在尝试使用以下代码执行 xquery 并获取其结果:

$.get('http://localhost:8984/rest/lod?query=/*:teiCorpus//*:TEI',
    function(data) { 
        alert(data); 
    });

我期待一个 xml 响应,但到目前为止我没有得到任何东西。 Firebug 显示如下错误:

XML Parsing Error: no element found Location: moz-nullprincipal:{a9dddfb7-5488-424b-8ab1-76913e889282} Line Number 1, Column 1: ^

我不明白我做错了什么。 有什么想法吗?

编辑: 当我放置:

http://localhost:8984/rest/lod?query=/*:teiCorpus//*:TEI

在我的地址栏中,我得到

<TEI xmlns="http://www.tei-c.org/ns/1.0" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:svg="http://www.w3.org/2000/svg">
    <teiHeader type="text" xml:id="Fr1">teiHeader</teiHeader>
    <text>teiText</text>
</TEI>

这正是我需要使用 get 检索的内容。

【问题讨论】:

  • 该 URL 返回的内容是什么?它是有效的 XML 吗?这似乎是问题 - 解析 XML(因为响应 Content-Type 是“text/xml”)
  • 你确定这是一个有效的网址吗?
  • 你确定它不应该是../rest/load?query=..吗?
  • 复制urlhttp://localhost:8984/rest/lod?query=/*:teiCorpus//*:TEI到你的浏览器地址栏看看返回什么
  • 完成并添加到操作中。我得到了我需要的东西。

标签: javascript jquery get


【解决方案1】:

您的网址似乎有一些非法字符,试试这个

$.get('http://localhost:8984/rest/lod',{ query: '/*:teiCorpus//*:TEI' },

    function(data) { 
        alert(data); 
    });

把它作为数据参数将有望逃脱非法字符

编辑:

进一步调查您的问题 - 可能还有 2 件事:

1 ) 您尝试执行跨域请求 - XML 不允许这样做(您可以通过查看浏览器中的 URL 来确定这一点,如果它与 http://localhost:8984 其跨域不同)

2 ) 您返回的 xml 响应不正确

【讨论】:

  • 我不太确定我理解什么是跨域请求。要执行获取,两个 url 必须具有相同的协议、地址和端口号?在这种情况下,进行获取的页面的 url 应该类似于localhost:8984/do_get.html。有解决办法吗?
  • 当你在浏览器中测试这个页面时,如果地址栏中的 URL 以localhost:8984 开头——那么它不是跨域请求。我很确定跨域与端口号(8984)无关 - 浏览器域和 $.get url 域是否相同?
  • 这正是我的问题。我能够通过将我的 api 的地址和端口更改为具有不同上下文的网络服务器的地址和端口来修复它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-14
  • 2011-11-16
  • 1970-01-01
  • 2019-09-15
  • 1970-01-01
相关资源
最近更新 更多