未捕获的TypeError:无法读取属性' text'未定义的(...)

时间:2016-11-10 13:34:10

标签: javascript jquery

问题似乎是:

$("#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, 
  

点击维基百科按钮,获得结果,点击结果=应该   加载其维基百科页面: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,我需要上面的那个:

$("#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 个答案:

答案 0 :(得分:1)

问题在于e.relatedTarget.textContent正在为您提供全文 - 即标题和说明。您只需要搜索的标题即可找到结果。

查看开发工具中的“网络”选项卡,您会看到出现错误&#34;您指定的页面不存在&#34;在回应中。

更改为仅选择h4内容:

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

Updated fiddle