Я пишу небольшую утилиту для своего музея. Министерство культуры Дании имеет базу данных REGIN, где я могу получить доступ к различной информации о музейных экспонатах в формате JSON. Это кросс-домен, без обратного вызова. Теперь есть API для доступа к данным, и я выяснил, как получить доступ к элементам базы данных, чтобы я мог выбирать информацию о конкретных музейных предметах.
Вот моя проблема: эти элементы расположены в различных «списках просмотра» или «коллекциях», которые объединены в другом месте. Я должен иметь доступ к списку JSON всех «коллекций», связанных с моим музеем, который имеет идентификатор 229.
URL-адрес https://www.kulturarv.dk/regin/dapi/ListView?&viewType=viewList&format=json&museumId=229
Когда я обычно обращаюсь к нему в браузере, конечно же, есть соответствующая информация о «видах» музеев в JSON.
</p>
<pre><code>[
{ "viewId" : "778","OprettetAfId" : "6813","OprettetDato" : "2011-06-20","name" : "Sølv test","keyword" : "test","text" : "Test af genstand for "skab 8"","museumId" : "229" },
{ "viewId" : "779","OprettetAfId" : "6813","OprettetDato" : "2011-06-22","name" : "Rum 29 - Skab 3","keyword" : "Test, drikkekrus, porcelæn","text" : "Genstande til Bibliotekssalens mobil-udstilling, skab 3.","museumId" : "229" },
{ "viewId" : "786","OprettetAfId" : "6813","OprettetDato" : "2011-09-02","name" : "genstand3skab3","keyword" : "til skab 3","text" : "Kærlighedsguden Amor","museumId" : "229" },
{ "viewId" : "792","OprettetAfId" : "6813","OprettetDato" : "2011-10-10","name" : "Skab 3 Bibliotekssalen","keyword" : "Porcelæn","text" : "Skab 3","museumId" : "229" },
{ "viewId" : "793","OprettetAfId" : "6813","OprettetDato" : "2011-10-13","name" : "genstand2skab3","keyword" : "til skab 3","text" : "Fugtbarhedsgudinden Ceres, skab 3","museumId" : "229" }
]
Теперь, по причинам, которые я не знаю, та же самая процедура, которую я использую для доступа к информации о конкретных предметах, не позволяет мне открыть вышеупомянутый URL. Вот мой код для доступа к вышеуказанному JSON, который ничего не возвращает:
</p>
<pre><code>$(document).ready(function() {
xmlhttp = new XSiteHttpRequest(); //a custom XHR... not sure why they decided to do it that way
xmlhttp.open("GET","https://www.kulturarv.dk/regin/dapi/ListView?&viewType=viewList&format=json&museumId=229",true);
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4) {
if (xmlhttp.status!=404) {
alert("Works!");
}
else {
alert("Does not work!");
};
};
};
xmlhttp.send(null);
});
Теперь я предполагаю, что, поскольку я не получаю оповещение («Работает!») ИЛИ оповещение («Не работает!»), Я делаю что-то не так.
Та же процедура работала с этим URL:
https://www.kulturarv.dk/regin/dapi/ListView?viewType=objectContent&format=xml&objectType=Genstand&objectId=3911238
И этот код выдает соответствующее предупреждение:
</p>
<pre><code>var objectId = 3911238;
$(document).ready(function() {
xmlhttp = new XSiteHttpRequest();
xmlhttp.open("GET","https://www.kulturarv.dk/regin/dapi/ListView?viewType=objectContent&format=json&objectType=Genstand&objectId=" + objectId,true);
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4) {
if (xmlhttp.status!=404) {
alert("Works!");
}
else {
alert("Does not work!");
};
};
};
xmlhttp.send(null);
});
Я не вижу никакой разницы между ними, так что здесь может происходить?
Я запустил нерабочий код через Firefox, и консоль с ошибкой сказала: «неопределенный строковый литерал». Не уверен, что это значит.