1

http://labs.bible.org/から聖書の一節にアクセスする API を作成しています。JSON 応答は、「応答」ヘッダーや階層名なしで返されます。Firebug は、GET リクエストが 200 ステータスとして戻ってくることを示していますが、応答タブは常に空です。URL をブラウザーに直接入力すると、必要な結果が得られますが、JSON をそのように処理する方法がわかりません。例: http://labs.bible.org/api/?passage=luke+9&formatting=full&type=json .

これは、JSON がどのように見えるかです。

[
    {
      "bookname": "Luke",
        "chapter": "9",
        "verse": "1",
        "text": "<t /><p class=\"bodytext\">After<n id=\"1\" /> Jesus<n id=\"2\" /> called<n id=\"3\" /> the twelve<n id=\"4\" /> together, he gave them power and authority over all demons and to cure<n id=\"5\" /> diseases,",
        "title": "The Sending of the Twelve Apostles"
    },
    {
      "bookname": "Luke",
        "chapter": "9",
        "verse": "2",
        "text": "and he sent<n id=\"1\" /> them out to proclaim<n id=\"2\" /> the kingdom of God<n id=\"3\" /> and to heal the sick.<n id=\"4\" />"
    },
    {
        "bookname": "Luke",
        "chapter": "9",
        "verse": "3",
        "text": "He<n id=\"1\" /> said to them, “Take nothing for your<n id=\"2\" /> journey &#8211; no staff,<n id=\"3\" /> no bag,<n id=\"4\" /> no bread, no money, and do not take an extra tunic.<n id=\"5\" />"
    },
    {
        "bookname": "Luke",
        "chapter": "9",
        "verse": "4",
        "text": "Whatever<n id=\"1\" /> house you enter, stay there<n id=\"2\" /> until you leave the area.<n id=\"3\" />"
    },
    {
        "bookname": "Luke",
        "chapter": "9",
        "verse": "5",
        "text": "Wherever<n id=\"1\" /> they do not receive you,<n id=\"2\" /> as you leave that town,<n id=\"3\" /> shake the dust off<n id=\"4\" /> your feet as a testimony against them.”"
    },
    {
        "bookname": "Luke",
        "chapter": "9",
        "verse": "6",
        "text": "Then<n id=\"1\" /> they departed and went throughout<n id=\"2\" /> the villages, proclaiming the good news<n id=\"3\" /> and healing people everywhere.</p>"
    },
    {
        "bookname": "Luke",
        "chapter": "9",
        "verse": "7",
        "text": "<t /><p class=\"bodytext\">Now Herod<n id=\"1\" /> the tetrarch<n id=\"2\" /> heard about everything that was happening, and he was thoroughly perplexed,<n id=\"3\" /> because some people were saying that John<n id=\"4\" /> had been raised from the dead,",
        "title": "Herod&#8217;s Confusion about Jesus"
    },
   (...)
]

では、JSON にアクセスして解析するコードをどのように記述し、すべての結果をどのように循環させるのでしょうか?

これらは、JSON を取得して解析するための私の関数です。

function callApi(argument, callBack){

        var requestUrl = apiUrl+argument+type;

        try{
            var request = new XMLHttpRequest();

            request.addEventListener("readystatechange",
            function() {callBack(request);}, false);

            request.open("GET", requestUrl, true);
            request.setRequestHeader("Accept", "application/json; charset=utf-8");
            request.send();
        }//end try
        catch(exception){
            alert("Request Failed");
        }//end catch
    }//end function callApi

function parseData(request){

    if(request.readyState==4 && request.status==200){
        var data = JSON.parse(request.responseText);
        displayNames(data);
    }//end if
}// end function parseData
4

1 に答える 1

0

次のように別の JSON URL を使用してみたらどうなるでしょうか: http://labs.bible.org/api/?passage=luke+9:3&type=json&callback=? (最後に削除&formatting=fullして追加&callback=?します。)

フォーマットタグ(すべての<HTML>タグ)なしで応答を取得した場合、少なくともjsFiddleのこの例では、解析しているようです: http://jsfiddle.net/L8Fed/2/

更新:ここで jQuery を使用して URL から JSON を取得する方法の例を次に示します。

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script>
$(function() {
    var json_url = "http://labs.bible.org/api/?passage=luke+9:3&type=json&callback=?";

    $.getJSON(json_url, function(json_response) { 
        for(var i = 0; i < json_response.length; i++) {
            alert(json_response[i].text);
        }
    });
});
</script>

基本的に、このコード:

  1. jQueryを含む
  2. JavaScript をready関数に入れます(詳細はこちら...)
  3. &callback=?最後にを含む API URL を呼び出すようにしてください(このため) 。
  4. jQuery の$.getJSON()関数を呼び出します (API URL を使用して、という名前の応答を返しますjson_response)
  5. をループして、json_response必要な値を取得できるようにします。 (そして、おそらくある時点で関数を取り出したいと思うでしょう... ;)alert()
于 2013-04-09T18:03:18.467 に答える