Выполнить Ajax SPARQL-запрос в Firefox - PullRequest
0 голосов
/ 03 мая 2018

Я пытаюсь выполнить асинхронный запрос Ajax sparql на dbpedia с Firefox, но я получил странный результат, и я не могу выяснить ошибку. Кажется, все работает (и на самом деле работает в Chrome, Edge и Internet Explorer), но если это выполняется в Firefox, страница продолжает загружаться бесконечно после выполнения запроса, и если вы обновляете страницу, она показывает пустую страницу. Может кто-нибудь объяснить мне, почему это происходит? Я даже пытался использовать jQuery, но с тем же результатом.

<script>
    //async request to the url -> print the result
    function httpGetAsync(theUrl) {
        var xmlHttp = new XMLHttpRequest();
        xmlHttp.onreadystatechange = function() {
            if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
                //query worked
                document.write(xmlHttp.responseText);
                //xmlHttp.abort();
            }
        }
        xmlHttp.open("GET", theUrl, true);
        xmlHttp.send(null);
    }
    //sparql query
    var query = [
        "PREFIX dbo: <http://dbpedia.org/ontology/>",
        "SELECT ?album ?artist WHERE {",
        "?album dbo:artist ?artist .",
        "} LIMIT 10"
    ].join(" ");
    //url for the query
    var url = "http://dbpedia.org/sparql";
    var queryUrl = url + "?query=" + encodeURIComponent(query);
    //query call
    httpGetAsync(queryUrl);
</script>

С помощью jQuery:

<script>
        //async request to the url -> print the result
        function httpGetAsync(theUrl) {
            $.ajax({
                url: theUrl,
                data: {
                    format: 'json'
                },
                error: function() {
                    document.write("error");
                },
                dataType: 'json',
                success: function(data) {
                    document.write(JSON.stringify(data));
                },
                type: 'GET'
            });
        }
        //sparql query
        var query = [
            "PREFIX dbo: <http://dbpedia.org/ontology/>",
            "SELECT ?album ?artist WHERE {",
            "?album dbo:artist ?artist .",
            "} LIMIT 10"
        ].join(" ");
        //url for the query
        var url = "http://dbpedia.org/sparql";
        var queryUrl = url + "?query=" + encodeURIComponent(query);
        //query call
        httpGetAsync(queryUrl);
</script>

1 Ответ

0 голосов
/ 04 мая 2018

Редактирование элемента dom вместо записи непосредственно в документ решило проблему.

document.getElementById('element').innerHTML = xmlHttp.responseText;
...