2016-11-10 10 views
1

問題があるように思われる:キャッチされない例外TypeError:プロパティを読み取ることができません未定義の 'テキスト'(...)

$("#results").append("<div class='list-group'><a class='list-group-item' href='https://it.wikipedia.org/wiki/" + encodeURIComponent(item.title.replace(" ", "_")) + "' data-toggle='modal' data-target='.bs-example-modal-lg'><h4>" + item.title.replace(" ", "_") + "</h4><p class='list-group-item-text'>" + item.snippet + "</p></a></div>"); 

とそのコール

page: e.relatedTarget.textContent, 

Hit the button Wikipedia, get the results, click on a result = should load its wikipedia page: JSFiddle playground

以下はそれを持っています

$("#wiki").one('click', function(e) { 
    var articleName = $(this).data('subject'); 
    $.getJSON("https://it.wikipedia.org/w/api.php?callback=?", { 
    srsearch: articleName, 
    action: "query", 
    list: "search", 
    format: "json" 
}, function(data) { 
    $("#results ul").empty(); 
    $("#results ul").append("<h3>Results for <b>" + articleName + "</b></h3>").text(); 
    $.each(data.query.search, function(i, item) { 
     $("#results").append("<div class='list-group'><a class='list-group-item' href='https://it.wikipedia.org/wiki/" + encodeURIComponent(item.title.replace(" ", "_")) + "' data-toggle='modal' data-target='.bs-example-modal-lg'><h4>" + item.title.replace(" ", "_") + "</h4><p class='list-group-item-text'>" + item.snippet + "</p></a></div>"); 
     $("#results div a").attr("href", "#"); 
    }); 
    $('.modal').on('show.bs.modal', function (e) { 
     $.getJSON("https://it.wikipedia.org/w/api.php?action=parse&format=json&callback=?", { 
      page: e.relatedTarget.textContent, 
      prop:"text" 
     }, function(data) { 
      $(".modal-content").html(data.parse.text['*']); 
     }); 
    }); 
}); 
}); 

これは動作しますが、私はhtml wiのために上記のものが必要です薄いこと:

$("#wiki").one('click', function(e) { 
    var articleName = $(this).data('subject'); 
    $.getJSON("https://it.wikipedia.org/w/api.php?callback=?", { 
    srsearch: articleName, 
    action: "query", 
    list: "search", 
    format: "json" 
}, function(data) { 
    $("#results ul").empty(); 
    $("#results ul").append("<h3>Results for <b>" + articleName + "</b></h3>").text(); 
    $.each(data.query.search, function(i, item) { 
     $("#results").append("<a class='list-group-item' href='https://it.wikipedia.org/wiki/" + encodeURIComponent(item.title.replace(" ", "_")) + "' data-toggle='modal' data-target='.bs-example-modal-lg'><h4>" + item.title.replace(" ", "_") + "</h4><p class='list-group-item-text'>" + item.snippet + "</a>"); 
     $("#results div a").attr("href", "#"); 
    }); 
    $('.modal').on('show.bs.modal', function (e) { 
     $.getJSON("https://it.wikipedia.org/w/api.php?action=parse&format=json&callback=?", { 
      page: e.relatedTarget.textContent, 
      prop:"text" 
     }, function(data) { 
      $(".modal-content").html(data.parse.text['*']); 
     }); 
    }); 
}); 
}); 

答えて

1

問題がはあなたの全体のテキストを与えているということである - それは、タイトルと説明です。あなたは結果を見つけるために検索のタイトルだけが必要です。

devツールの[ネットワーク]タブを見ると、応答に「指定したページが存在しません」というエラーが表示されます。これらの行に2回以上

page: $(e.relatedTarget).find('h4').text(), 

Updated fiddle

関連する問題