Получить XML с HTTPRequest на странице без расширения файла XML - PullRequest
1 голос
/ 17 июня 2011

Я пытаюсь использовать HTTPRequest, используя функцию jjerys ajax, чтобы получить XML со страницы.Функция ничего не возвращает.Моя теория о том, почему это не работает, заключается в том, что страница, на которую я нажимаю, имеет расширение «.ns», а не «.xml». Это ПОЛНЫЙ источник страницы, на которую я нажимаю.

   <?xml version="1.0" encoding="UTF-8"?>
<logged_in_reps>
</logged_in_reps>

Как я могу получить этот XML из HTTPRequest?

Некоторая дополнительная информация, которая может помочь: Когда я сохраняю веб-страницу, она сохраняется как «command.ns.xml» (в которой URL-адрес содержит только .ns, а не.xml) и когда я попадаю на эту страницу в том же каталоге, что и мой собственный файл (с расширением .xml), к которому есть запрос, он работает нормально.

Кроме того, домен, к которому относится файл, выполняющий запрос, - «www.csun.edu», а страница, на которую я попадаю, - «remotesupport.csun.edu».Может ли это быть проблемой?

Вот код для звонка (к сожалению, я не могу указать имя пользователя и пароль с URL-адресом, по которому я нажимаю)

$.ajax({
    url: 'https://remotesupport.csun.edu/api/command.ns?username=user&password=pass&action=get_logged_in_reps',
    type: 'GET',
    datatype: 'xml',
    success: function(xml) {
        alert(xml);
    }
});

Ответы [ 3 ]

1 голос
/ 18 июня 2011

Чтобы обойти проблему с той же политикой происхождения и тот факт, что сервер, с которого вы хотите получить XML, не поддерживает JSONP, вы можете использовать YQL.

Вот пример

Затем вы использовали бы это в качестве URL для вашего запроса JSONP:

http://query.yahooapis.com/v1/public/yql?q=select * from xml where url="http://the-xml-url.com"

Так что для вашей проблемы вы бы сделали что-то вроде этого:

yql_url = function(source_url) {
  return "http://query.yahooapis.com/v1/public/yql?q=select * from xml where url=\"" + source_url + "\"";
};

$.ajax({
    url: yql_url('https://remotesupport.csun.edu/api/command.ns?username=user&password=pass&action=get_logged_in_reps'),
    type: 'GET',
    dataType: 'xml',
    success: function(xml) {
        console.log($(xml).find('result'));
    }
});
0 голосов
/ 17 июня 2011

Да, проблема заключается в ограничении безопасности, которое называется Одинаковая политика происхождения .

Вы можете обойти его, используя технику JSONP (см. Объяснение поддержки JQuery здесь ), нодля этого требуется заключить сгенерированный вывод XML.

Другое решение - прокси-запрос Ajax через исходный сервер (т. е. www.csun.edu в вашем случае).

0 голосов
/ 17 июня 2011

Есть две основные проблемы.

Во-первых, вам запрещен доступ к этому XML-файлу из-за Одинаковой политики происхождения .

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...