2016-06-17 14 views
0

私はMediaWiki APIを使用してウィキのテーブルからテキスト情報を取得しているので、すべての行のデータセットに設定できます。私は、HTML上に(行/列を使って)表を表示することができますが、データを配列やその他のタイプのデータセットにローカルに設定する方法がわかりません。
コードは以下の通りです:JS MediaWiki APIでローカルに解析された行にアクセスする

$(document).ready(function(){ 
$.ajax({ 
    type: "GET", 
    url: "http://wiki.teamliquid.net/smash/api.php?action=parse&format=json&prop=text&section=0&pageid=4887&callback=?", 
    contentType: "application/json; charset=utf-8", 
    async: false, 
    dataType: "json", 
    success: function (data, textStatus, jqXHR) { 
    var markup = data.parse.text["*"]; 
    var i = $('<tbody></tbody>').html(markup); 

    // remove any references 
    i.find('sup').remove(); 

    i.find('img').remove(); //remove images 
    i.find('a').each(function() {$(this).replaceWith($(this).html()); }); //remove links 

    x = $('#article').html($(i).find('tr')); //find all rows 
    //console.log(x.parse.text.tr); 
    }, 
    error: function (errorMessage) { 
    } 
}); 
}); 

答えて

0

まず、私はページ= All_Tournamentsを使用して代わりにpageidに設定勧めします。このコードは、MediaWikiの内部で実行されている場合、あなたの代わりに$アヤックス/ $のこのような何かを行うことができることを 注意を取得:。

new mw.Api().get({ 
    action: 'parse', 
    prop: 'text', 
    section: 0, 
    page: 'All Tournaments' 
}).done(function (data) { 
    // ... 
}); 

(これは非同期コールバック関数の内容を実行します注意してください)

しかしあなたの質問に:

var tables = []; 
$(i).find('table').each(function (tableId, tableEle) { 
    var tableObjs = [], headers = []; 
    $(tableEle).find('th').each(function (i, th) { 
     headers[ i ] = $(th).text().trim(); 
    }); 

    $i.find('tr').each(function (rowId, rowEle) { 
     var row = {}; 
     $(rowEle).find('td').each(function (i, tdEle) { 
      row[ headers[ i ] ] = $(tdEle).text().trim(); 
     }); 
     tableObjs[ rowId - 1 ] = row; 
    }); 
    tables.push(tableObjs); 
}); 
console.log(tables); 

これは、オブジェクトの配列の配列を生成します。外側の配列はテーブルのリストであり、各アイテムはそのテーブル内のすべての行の配列であり、各アイテムはオブジェクトであり、キーはデータが入るヘッダーで、値はトリミングされたテキストコンテンツです。データ。

関連する問題