Это мой первый пост здесь, на 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 проще, как заставить его работать? Есть ли у кого-нибудь рабочие примеры, которыми можно поделиться?
Извините, что так длинно - я подумал, что будет лучше показать, что я пытался и откуда я получаю информацию.
Большое спасибо!