У меня 41 объект JSON, каждый из которых имеет одинаковую схему.
Эти объекты довольно велики, и поэтому я хотел бы загрузить объект условно в сценарий JavaScript при выборе <option>
из меню <select>
с id
из myPicker
.
Пока что я настроил jQuery для обработки изменений в <select>
:
$('#myPicker').change(function() {
alert('Value change to ' + $(this).attr('value'));
$('#container').empty();
init();
});
Функция init()
рисует вещи в div
, называемые container
.
Когда я изменяю myPicker
, я хочу, чтобы init()
вел себя как init(value)
, что, в свою очередь, указывает init
загрузить один из 41 объектов JSON из файла (на основе value
).
Выполняется ли загрузка фрагмента JSON из файла (расположенного на стороне сервера) в этом случае, или мне нужно использовать сценарий на стороне сервера, обрабатывающий представления и ответы Ajax-формы и т. Д.?1025 *
РЕДАКТИРОВАТЬ
Я написал следующий код:
<script language="javascript" type="text/javascript">
$(document).ready(function(){
$('#cellTypePicker').change(function() {
alert('Value change to ' + $(this).attr('value'));
$('#container').empty();
initFromPicker($(this).attr('value'));
});
});
function initFromPicker(name) {
// pick default cell type from picker, if name is undefined
if (typeof name === "undefined")
name = 'AG10803-DS12374';
var jsonUrl = "file://foo/bar/results/json/" + name + ".json";
alert(jsonUrl);
$.ajax({
url: jsonUrl,
dataType: 'json',
success: function(response){
alert("Success!");
},
error: function(xhr, textStatus, errorThrown){
alert("Error: " + textStatus + " | " + errorThrown + " | " + xhr);
}
});
init(); // refills container...
}
</script>
<body onload="initFromPicker();">
...
Строка alert("Success!");
никогда не вызывается.
Вместо этого я получаю следующую ошибку:
Error: error | Error: NETWORK_ERR: XMLHttpRequest Exception 101 | [object Object]
Я проверяю значение jsonUrl
, и оно кажется правильным URL.Файл, на который он указывает, присутствует, и у меня есть разрешения на доступ к нему (он находится в моей домашней папке).Есть ли что-то, что я все еще пропускаю?