2010-10-26 6 views
0

У меня есть приложение rails, и я хочу разобрать XML-запрос от API с помощью Javascript (ajax). Я пробовал:Анализ XML-ответа от API, Javascript, Ajax

$(document).ready(function() 
{ 
    $.ajax({ 
    type: "GET", 
    url: "http://localhost:3000/users/mike.xml",         
    dataType: "xml", 
    success: parseXml 

    }); 
}); 

function parseXml(xml) 
{ 
... 
} 

но не работает. Когда я изменяю 'url' с локальным xml-файлом e.x url: 'data.xml', отлично работает!

Как я могу разобрать этот ответ?

любая помощь будет высоко оценен :-)

+1

См. http://stackoverflow.com/questions/1077218/are-different-ports-on-the-same-server-considered-cross-domain-ajax-wise –

+0

Не то, что я ищу! – Lamp

+0

Можете ли вы разместить свой контроллер, который генерирует XML, а также Опубликовать вывод firebug (он отправляет запрос на сервер, и если да, то какой ответ) –

ответ

0

Как Макс предложил, было бы очень полезно установить и использовать Firebug в браузере Firefox, так что вы можете смотреть запрос GET и ответ. От вашего вопроса не так много, но это звучит как проблема на «сервере».

Когда вы говорите, что это не работает, вы имеете в виду, что parseXml (xml) не вызывается? В запросе AJAX вы определяете обработчик успеха - если ваш запрос GET не работает, то этот обработчик никогда не вызывается. Я нашел, что более полезно определить общий обратный вызов («полный» для JQuery, который он вроде бы выглядит так, как вы используете), так как он будет вызван независимо от того, какой ответ. Затем вы просто проверяете на успех или неудачу самостоятельно и предпринимаете соответствующие действия.

+0

Я имею в виду, что не возвращает никакого ответа xml. – Lamp

+0

firebug консольный вывод: GET HTTP: // локальный: 3000/пользователей/mike.xml \t 200 OK \t \t \t 298ms jquery.min.js (строка 130) ParamsHeadersPostPutResponseCacheHTMLXML (пустая строка) – Lamp

+0

Когда я называю из браузера http: // localhost: 3000/users/mike.xml my xml возвращает normal – Lamp

0

Попробуйте удалить «.xml» с вашего URL-адреса. Я считаю, что AJAX-вызовы принимают xml-ответ по умолчанию, поэтому наличие xml в заголовке запроса, а также ваш URL-адрес может привести к запутыванию контроллера. Впрочем, это только предположение.

+0

ничего .. Кажется, что единственный способ - jsonp (json with padding). Я могу захватить этот ответ, но с 1error в моей консоли firebug ... (недопустимая метка) – Lamp

+0

Делает ли ваш контроллер файл format.xml {render: => @ object.to_xml} или отправляет шаблон xml? – Samo

0

Если URL-адрес не находится в том же домене, что и ваша страница с JavaScript, ваш браузер не позволит ему работать из-за политики междоменной безопасности. Убедитесь, что вы показываете страницу через URL-адрес, который выглядит точно так же, как тот, который вы запрашиваете при вызове ajax (так что в примере localhost убедитесь, что вы не используете свой сервер на 127.0.0.1 URL-адресе или что-то вроде что)

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