Это мой первый пост здесь на Stackoverflow, хотя на протяжении многих лет я был частым посетителем!
У нас есть собственное приложение для отслеживания дефектов, написанное на ASP. У нас есть ручной процесс, с помощью которого мы копируем всю необходимую информацию о пользователях Rally в раздел «Технические характеристики» нашего сайта. Я пытаюсь динамически отображать эту информацию на нашем сайте с помощью JQuery и JSON. Прежде чем я запустил его на странице ASP, я тестирую его на локальном компьютере с помощью XAMPP.
Я сталкиваюсь с исключением Access-Control-Allow-Origin при попытке доступа к API через JQuery. Вот пример страницы, которую я пытаюсь загрузить: https://rally1.rallydev.com/slm/webservice/1.26/project.js.
Вот код:
<script>
$(document).ready(function(){
$.getJSON("https://rally1.rallydev.com/slm/webservice/1.26/project.js",
function(data) {
$.each(data.QueryResult.Results, function(i, result) {
$("<option>").attr("value", result._refObjectName).text(result._refObjectName).appendTo("#dd_ItSel");
});
})
.success(function() {console.log("dd-It-success"); })
.error(function() { console.log("dd-It-error");})
.complete(function() { console.log("dd-It-complete"); })
;
});
</script>
Будет загружено следующее выпадающее меню:
<select name="projectSelect" id="dd_projSel"></select>
Согласно этой странице в документации Rally API https://rally1.rallydev.com/slm/doc/webservice/rest_json.jsp,, чтобы обойти это ограничение, мы должны использовать HTTP-прокси или функцию обратного вызова JSONP. Я попытался включить API Yahoo в мою страницу () и попытался использовать некоторый код, который отображается на странице примера API Rally, но не смог заставить это работать.
This page uses the YUI Connect method to submit an asyncrounous request against the JSON REST API. A JavaScript function is used in the request callback to render the object graph below.
var graphContainer = document.getElementById('graph');
var callbacks = {
success: function(response) {
drawGraph(document.getElementById('graph'), YAHOO.lang.JSON.parse(response.responseText));
},
failure: function() {
alert('JSON REST API request failed');
document.getElementById('graph').innerHTML = '';
}
};
YAHOO.util.Connect.asyncRequest('GET', 'https://rally1.rallydev.com/slm/webservice/1.27/project.js?workspace=https://rally1.rallydev.com/slm/webservice/1.27/workspace/620327365&query=&start=1&pagesize=20', callbacks);
Я также попытался включить переменную ответа JSONP, как они упоминались в документации, но также не смог заставить ее работать:
Кто-нибудь был успешным с методом прокси или методом JSONP? Я предполагаю, что метод JSONP легче заставить работать; это тот случай? Если нет, то может ли кто-нибудь помочь мне подсказать, как настроить HTTP-прокси для этого использования?
Если метод JSONP проще, как мне заставить его работать? У кого-нибудь есть рабочие примеры, которыми можно поделиться?
Извините, что так долго - я подумал, что было бы лучше показать, что я пытался и откуда я получаю информацию.
Большое спасибо!