Предположит следующую структуру каталогов:Syncrhonous междоменной AJAX запрос
/web
example.html
example.js
/example.json
Я открываю example.html с моим браузером, и она работает example.js, который пытается загрузить данные в example.json синхронно с использованием следующий вызов:
$.ajax({url: "file:///example.json",
dataType: "json",
async: false,
success: function(data) {
console.log(data)
},
error: function(request, status, error) {
console.log(request);
console.log(status);
console.log(error);
}
});
Это приводит к ошибке с сообщением «Доступ к ограниченным URI отказано» и код ошибки 1012. до сих пор, я взял посмотреть на Access to restricted URI denied“ code: ”1012 - Cross domain Ajax request и Access to restricted URI denied code: 1012. Первая ссылка предложила использовать метод jQuery getJSON, но этот метод работает только асинхронно. Вторая ссылка предлагает какой-то обратный вызов JSONP, но я не смог понять, как именно они работают.
Обратите внимание, что эта проблема легко исчезнет, если я перемещу example.json в /web/example.json, но я хотел бы избежать этого из-за некоторых обстоятельств моей реальной проблемы (то, что я представил здесь, является упрощением моего актуальная проблема).
EDIT: Я пытаюсь это JSONP кода, но я до сих пор работаю в ту же ошибку:
$.ajax({url: "file:///example.json",
dataType: "jsonp",
success: function(data) {
console.log(data)
},
error: function(request, status, error) {
console.log(request);
console.log(status);
console.log(error);
}
});
Почему это должно быть синхронно? Почему бы не просто отложить выполнение определенного кода до тех пор, пока не будет вызвана функция обратного вызова? –
Причина использования AJAX заключается в том, что он асинхронный. Причина утеряна, когда вы делаете это синхронно :( –
@ Vega Причина, по которой я использую AJAX, заключается в том, что она может загружать мои данные JSON, а не потому, что она асинхронна. Если есть альтернатива, которая также может загружать мои данные JSON, я бы будьте рады услышать об этом. – abw333