2013-05-09 3 views
1

Я пытаюсь выполнить XQuery и получить его результат, с помощью следующего кода:jQuery.get() не работает

$.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:^

Я не понимаю, что я делаю неправильно. Любые идеи?

EDIT: Когда я размещаю:

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> 

, и это именно то, что мне нужно получить с ГЭТ.

+1

Что такое содержание возвращается из этого URL ? Действительно ли это XML? Кажется, проблема заключается в анализе XML (поскольку ответ «Content-Type» является «text/xml») – Ian

+1

вы уверены, что действительный URL-адрес? – Kristian

+1

Вы уверены, что это не должно быть '../ rest/load? Query = ..'? –

ответ

2

Похоже, ваш URL имеет некоторые недопустимые символы, попробуйте это

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

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

положить его в качестве параметра данных, мы надеемся, спасаясь от недопустимых символов

EDIT:

Заглянув в вашу проблему больше - может быть еще 2 вещи:

1) Ваша попытка сделать запрос кросс-домена - это запрещено с помощью XML (лет) и можно определить, посмотрев на URL в вашем браузере, если это не то же самое, как http://localhost:8984 его междоменном)

2) Ваш XML-ответ вы возвращаете неверен

+0

Я не совсем уверен, что понимаю, что такое запрос перекрестного домена. Для выполнения get оба URL должны иметь один и тот же протокол, адрес и номер порта? В этом случае URL-адрес страницы, создающей get, должен быть чем-то вроде http: // localhost: 8984/do_get.html. Есть ли работа? –

+0

Когда вы тестируете эту страницу в браузере, если URL-адрес в адресной строке начинается с http: // localhost: 8984, то это не запрос перекрестного домена. Я уверен, что кросс-домен не имеет ничего общего с номером порта (8984). Является ли домен браузера и доменом $ .get url одинаковым? –

+0

Это была моя проблема. Я смог исправить это, изменив адрес и порт моего api на то же самое на моем веб-сервере с другим контекстом. –

Смежные вопросы