javascript 使用来自 dbpedia 服务器的 json 数据的引用错误

Reference error on javascript using json data from dbpedia server

大家好,在此先感谢您的帮助: 我收到这个错误:

Uncaught SyntaxError: Unexpected identifier

对于第 65 行(带有 "Var query" 的行...这里是第三行)

当我点击“执行”按钮时,这是另一个错误:

Uncaught ReferenceError: retrieveData is not defined

(retrieveData 是我点击调用的函数)

我已使用现有代码对其进行修改以达到我的目的。 非常奇怪的事情是:

1:原代码运行没有错误(和我看来一模一样)

2:如果我粘贴 urlquery&output=json 在浏览器上,它工作正常...所以我认为这不是拼写错误的错误...

这是我写的代码:

<script type="text/javascript">
function retrieveData() {
  var query = "SELECT ?museum WHERE {?museum a <http://dbpedia.org/ontology/Museum>.?museum <http://dbpedia.org/ontology/address> ?address. FILTER contains(?address, "Firenze")}";

  var url = 'http://it.dbpedia.org/sparql?default-graph-uri=&query=' + encodeURIComponent(query) + '&output=json';
  $.ajax({           
    url: url,
    dataType: "json",
    success: function (data) {
      $('#results').show();
      $('#raw_output').text(JSON.stringify(data, null, 3));
      handle_json(data);
    },
    error: function(e) {}
  });
}

function handle_json(json) {
  $('#output_div').text("");

  $.each(
    json['results']['bindings'], function(index, value) {
      var html = "";
     name = value['museum']['value'].replace("http://it.dbpedia.org/resource/", "");
     name = decodeURIComponent(name.replace(/_/g, " "));
      html += "<div><h3><b>" + name + ":</b> () </h3></div>";

      $('#output_div').append(html);
    }
  );
}
</script>

这是原始代码:

<script type="text/javascript">
function retrieveData() {
  var query = "PREFIX : <http://dbpedia.org/resource/> PREFIX dbp: <http://dbpedia.org/ontology/> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX dbpprop: <http://dbpedia.org/property/> SELECT ?person ?b_date ?d_date ?abstract ?thumbnail WHERE { ?person rdf:type dbp:Person ; dbp:birthDate ?b_date ; dbp:deathDate ?d_date ; dbp:abstract ?abstract . OPTIONAL { ?person dbp:thumbnail ?thumbnail } FILTER ( ?b_date >= '1488-01-01'^^xsd:date && ?b_date < '1600-01-01'^^xsd:date && ?d_date < '1650-01-01'^^xsd:date ) FILTER ( langMatches(lang(?abstract), 'EN')) } ORDER BY ?person ?b_date";

  var url = 'http://dbpedia.org/sparql?default-graph-uri=http%3A%2F%2Fdbpedia.org&query=' + encodeURIComponent(query) + '&output=json';

  $.ajax({           
    url: url,
    dataType: "json",
    success: function (data) {
      $('#results').show();
      $('#raw_output').text(JSON.stringify(data, null, 3));
      handle_json(data);
    },
    error: function(e) {}
  });
}

function handle_json(json) {
  $('#output_div').text("");

  $.each(
    json['results']['bindings'], function(index, value) {
      var html = "";
      name = value['person']['value'].replace("http://dbpedia.org/resource/", "");
      name = decodeURIComponent(name.replace(/_/g, " "));
      html += "<div><h3><b>" + name + ":</b> (" + value['b_date']['value'] + " - " + value['d_date']['value'] + ")</h3></div>";

      if (value['thumbnail'] != null)
        html += "<div class='inline thumb'><img style='width: 200px' src='" + value['thumbnail']['value'].replace("200px", "150px") + "'/></div>";
      else
        html += "<div class='inline thumb'><img src=''/></div>";

      html += "<div class='inline abstract'>" + value['abstract']['value'] + "</div><div class='clear'></div><br>";

      $('#output_div').append(html);
    }
  );
}
</script>

再次感谢

--更新-- 显然我把引号搞得一团糟。谢谢多多。现在可以了。 如果有人试图 运行 这个脚本,请注意: 它会来 "XMLHttpRequest same domain policy error"... 只需添加“&callback=?”在 url 中,使用 JQUERY 中对 JSONP 的内置支持。

您没有正确转义引号,即:

var query = "SELECT ?museum WHERE {?museum a <http://dbpedia.org/ontology/Museum>.?museum <http://dbpedia.org/ontology/address> ?address. FILTER contains(?address, "Firenze")}";

应该是

var query = "SELECT ?museum WHERE {?museum a <http://dbpedia.org/ontology/Museum>.?museum <http://dbpedia.org/ontology/address> ?address. FILTER contains(?address, \"Firenze\")}";

(或者,在 javascript 中,您可以使用单引号和双引号来区分字符串中的引号和字符串定义引号。)