4

JavascriptでDbdepdiaから土木工学の英文記事のアブラクトを取得したいです。これは私が試したものですが、失敗します。

<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<style type="text/css">

</style>
</head>
    <script type="text/javascript">
    var url = "http://dbpedia.org/sparql";
    var query = "\
     PREFIX dbpedia2: <http://dbpedia.org/resource/>\
     PREFIX Abs: <http://dbpedia.org/ontology/>\
    SELECT ?abstract\
   WHERE {\
            ?s dbpedia2:Civil_engineeringe\"@en;\ Abs:abstract ?abstract\ 
    }";

これは、URLをエンコードしてajaxに渡す方法です

 var queryUrl = encodeURI( url+"?query="+query+"&format=json" );
    $.ajax({
        dataType: "jsonp",  
        url: queryUrl,
        success: function( _data ) {
            var results = _data.results.bindings;
            for ( var i in results ) {
                var res = results[i].abstract.value;
                alert(res);
            }
        }
    });
</script>
    <body></body>

</html>
4

2 に答える 2

6

複数行の文字列には別のアプローチを使用し、DBPedia に対する SPARQL クエリの書き込みに直接使用しています。

var query = [
 "PREFIX dbpedia2: <http://dbpedia.org/resource/>",
 "PREFIX Abs: <http://dbpedia.org/ontology/>",
 "SELECT ?abstract",
 "WHERE {",
    "?s dbpedia2:Civil_engineeringe\"@en;",
    "Abs:abstract ?abstract",
 "}"
].join(" ");

エンコードの問題が発生した場合に行区切りを調整でき、必要に応じて行を簡単にコメントアウトできるため、このようにしています。

クエリを実行する必要がある場合は、クエリ自体をエンコードし、それを URL に追加します。

キー、値、および等号がエスケープ文字としてエンコードされている可能性があるため、クエリ文字列全体をラップする方法には注意してください。

私はこのようにします:

var queryUrl = url+"?query="+ encodeURIComponent(query) +"&format=json";
于 2014-04-02T16:31:29.737 に答える