У меня есть большой объем статических/редко изменяющихся данных в формате JSON. Для улучшения моей производительности приложения MVC ASP.NET я хотел бы переместить их в CDN (Облачная Передняя сторона Amazon).
Однако, когда я делаю это, перекрестная доменная политика умирает, и jQuery заставляет вызов метода ОПЦИЙ HTTP вместо HTTP ДОБРАТЬСЯ, и Amazon отклоняет requst с "403 Запрещенными" ответами.
JSONP мог бы быть путем вокруг этого, но так как файлы статичны и на CDN нет никакого способа перенести JSON в пользовательскую функцию. Однако я могу воссоздать их перенесенный с известным именем функции. Например:
{"LineDetails":{"LineNo":"3109","DbId":9 ....}}
Я могу сделать что-то как:
JsonWrapping({"LineDetails":{"LineNo":"3109","DbId":9 ....}});
Имя функции "JsonWrapping" будет тем же для всех файлов.
Для jQuery действительно ли возможно загрузить данные JSON через JSONP, если это перенесено в то же имя функции как показано выше? Мое чтение jQuery, который JSONP - то, что jQuery создает некоторых пользовательских одно имя функции использования времени для запроса JSONP. Это может быть переопределено?
Спасибо за помощь.
Я только что обнаружил, что это как-то возможно. Я решил это так:
$(document).ready(function(){
$.getJSON("http://example.com/staticjsonfile.json",function(data){
//callback function isn't here
}
});
function JsonWrapping(data){
//It's really here
alert(data);
}
Это не идеально, так как вы теряете привязку к событию, которое вызвало Ajax запрос. Так что требуется некоторый хакерский подход. Тем не менее, это вроде как позволяет сделать работу. Я был бы очень открыт для лучшего решения.