Ответ 1
Вы должны установить нетрадиционный параметр, чтобы заставить SO API работать. Вместо обычного callback
вам необходимо передать параметр jsonp
.
Кроме того, вы не можете сделать POST
с помощью JSONP.
$.ajax({
type: 'GET',
url: 'http://api.stackoverflow.com/1.1/stats',
dataType: 'jsonp',
success: function() { console.log('Success!'); },
error: function() { console.log('Uh Oh!'); },
jsonp: 'jsonp'
});
Невозможно выполнить междоменную AJAX с помощью обычного XMLHTTPRequest. Это по соображениям безопасности (он вызывает политику одного и того же происхождения).
Существует обходное решение. Теги script
не подпадают под это ограничение. Это означает, что вы можете вставить тег script
в документ, который вызывает URL-адрес. Если вы определяете глобально доступную функцию в своем script и говорите удаленному серверу о том, что эта функция вызывается, сервер может передать код, который обертывает данные, которые будут отправлены при вызове этой функции.
Трудность, с которой вы столкнулись, связана с API StackOverflow. Обычно вы должны использовать аргумент callback
в своем запросе, чтобы сообщить серверу, что вы вызываете. Однако API-интерфейс StackOverflow попросит вас использовать параметр jsonp
.