2013-05-09 155 views
1

我试图执行一个XQuery和获得它的结果,用下面的代码:jQuery.get()方法不起作用

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

我期待一个XML响应,但到目前为止,我不没有东西。 萤火虫显示以下错误:

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。

+1

是从URL返回什么内容?它是有效的XML吗?这似乎是问题 - 解析XML(因为响应的内容类型是“text/xml”) – Ian 2013-05-09 03:12:33

+1

你确定这是一个有效的网址吗? – Kristian 2013-05-09 03:12:37

+1

你确定它不应该是'../ rest/load?query = ..'? – 2013-05-09 03:14:12

回答

2

它看起来像你的URL有一些非法字符,试试这个

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

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

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

编辑:

展望您的问题更多 - 可能有2件事情可能是:

1)您试图做一个跨域请求 - 这是不允许的XML(哟ü可以通过查看浏览器的URL确定这一点,如果它是不一样的http://localhost:8984其跨域)

2)你正在返回你的XML响应不正确,

+0

我不太确定我了解什么是跨域请求。要执行获取,这两个网址必须具有相同的协议,地址和端口号?在这种情况下,获取页面的网址应该是http:// localhost:8984/do_get.html。有没有解决办法? – 2013-05-09 11:23:43

+0

当您在浏览器中测试此页面时,如果地址栏中的URL以http:// localhost:8984开头 - 那么它不是跨域请求。我很确定跨域与端口号无关(8984) - 浏览器域和$。url域是否相同? – 2013-05-09 23:19:09

+0

这正是我的问题。我能够通过将我的api的地址和端口更改为具有不同上下文的我的web服务器来解决此问题。 – 2014-04-24 16:57:43