Я пытаюсь получить доступ к стороннему API через HTTP, используя jquery .ajax (или .get, .post и т. Д.). API находится на моей машине на
http://localhost:7777/server/<method>?<args>
Сервер имеет набор методов для запроса своего OLAP-сервера, таких как вход в систему (который возвращает ключ входа в систему для использования с другими методами), базы данных (в которой перечислены базы данных на сервере), кубы, измерения и т. Д.
например
Для входа на сервер
http://localhost:7777/server/login?user=admin&password=21232f297a57a5a743894a0e4a801fc3
Если я введу это в адресную строку браузера, я верну правильные данные.
Однако я хочу создать небольшую веб-страницу для проверки вызовов и подумал, что должен иметь возможность использовать jQuery для создания Gets и возврата данных, отправленных в браузер.
Вот мой код
<html>
<head>
<title>Palo Test Report</title>
<script type="text/javascript" src="scripts/jquery-1.3.2.min.js"></script>
<script type="text/javascript" language="javascript">
function calculate(){
$.ajax({
type:"GET",
url:"http://localhost:7777/server/login?user=admin&password=21232f297a57a5a743894a0e4a801fc3&callback=?",
success: function(data,textStatus){
alert(data + ":" + textStatus);
}
,
error: function(request,errorStatus,errorThrown){
alert("Error:" + errorThrown);
}
});
}
</script>
</head>
<body>
<div>Sample Palo Report #1</div>
<input type="button" value="Calculate" onclick="calculate();" />
</body>
</html>
Метод отправляется на сервер и выполняет запрос обратного вызова. Однако параметр данных представляет собой пустую строку.
Я прочитал несколько постов, касающихся проблем с междоменным доступом через ajax, и похоже, что это может происходить, когда служба запускается через другой порт, хотя меня немного удивляет флаг «успех». Еще одна странность заключается в том, что если я создаю новый виртуальный каталог в IIS и помещаю туда файл, я запускаю функцию обратного вызова с пустым параметром errorThrown.
Служба / API возвращает простые строки, а не json, поэтому getJSON не работает.
Возможно ли то, что я пытаюсь с jQuery?
У меня есть обходной путь, но он довольно уродливый!
Заранее спасибо
G