2016-12-12 6 views
0

Ajax経由でHTMLページをリクエストしています。AJAX&JSON:ajax経由で受信したデータにtableToJSON()を適用します。

このページには、私がtableToJSON()機能をJSONに変換したい<table id="studentsTable" ..が含まれています

$.ajax({ url:'https://domain.org/en/courses/1226/course_applications', 
    success: function(data) { 

     var $html = $(data); 
     var $table = $html.find('#studentsTable').parent(); 
     console.log($table.html()); //This prints correctly the <table>..contents..</table> 

     var tableJ = $table.tableToJSON(); 
     console.log(tableJ); //This prints Array[0] !! 
     } 
    }); 

ない場合は、<table></table>タグが切り落とされたので、私はparent()ことをやっています。

<table border="1" id="studentsTable"> 
<thead> 
    <tr> 
     <th>Name</th> 
     <th>Surname</th> 
     <th>Age</th> 
     <th>Gender</th> 
     <th>Old</th> 
    </tr> 
</thead> 
<tbody> 
    <tr> 
     <td>John</td> 
     <td>Smith</td> 
     <td>40</td> 
     <td>M</td> 
     <td>N</td> 
    </tr> 
    <tr> 
     <td>Clare</td> 
     <td>Lander</td> 
     <td>34</td> 
     <td>F</td> 
     <td>Y</td> 
    </tr> 
</tbody> 

私の問題は、私はjQueryのに新しいと目的は、このようにテーブルを与えているtableToJSON()

を呼び出すときに、明らかに私が何か間違ったことをやっているということです

JSONオブジェクトをこのようにしてください(Chrome-extensしかし、これは別の質問になります);

[ 
{ 
    "Name": "John", 
    "Surname": "Smith", 
    "Age": "40", 
    "Gender": "M", 
    "Old": "N" 
}, 
{ 
    "Name": "Clare", 
    "Surname": "Lander", 
    "Age": "34", 
    "Gender": "F", 
    "Old": "Y" 
} 
] 

忍耐力と許容差を事前におねがいします。

答えて

1

それは、特定のことは難しいのでtableToJSONは、カスタム関数やプラグイン(ない標準のjQuery)のいくつかの並べ替えなければならないが、それにもかかわらず、私は答えは簡単だと思う:.parent()を使用して

var $table = $html.find('#studentsTable'); 

はあなたのどんなでしょうか要素はその上にあり、テーブルではありません。私はあなたが "tableToJSON"メソッドにテーブルではないsomethngをフィードすると、それは失敗すると思われる。 .html()方法が唯一の選択された要素の内部HTMLを出力しますので、あなたがconsole.log($table.html());を行うときは、「テーブル」のタグを見ることができない

理由がある - http://api.jquery.com/html/でドキュメントの例を参照してください。私はこれが間違った要素をあなたの関数に渡すことにあなたを惑わしていると思う。

+0

ほとんどのOPはhttps://github.com/lightswitch05/table-to-jsonを使用しています – Tomalak

+0

親愛なる@ADyson、あなたの答えに感謝します。あなたが示唆したものは理にかなっていますが、今はtableToJSONが空の配列を返します:[]一方、Tomalak、tableToJSONは追加ライブラリが必要です:https://github.com/lightswitch05/table-to-json – Pakosis

+0

@Pakosis not when私はそれを実行する、それはありません。完璧に動作します。間違いなく正しいアイテムを渡していることを確認してください。 P.S. 'console.log(JSON.stringify(tableJ));を実行すると、より読みやすい結果が得られます。 – ADyson

0

は最後に、さまざまな試みの後、私は&がここになぜをコピー&ペーストされ、this other SO answerでsollutionを発見しました。 @Buzinasとして は言う:それは働いていない

tableToJSONが 要素が動作するドキュメントの内側に配置されている必要がありますので、おそらくそれはです。 JSONを取得するためにのみテーブルをドキュメントに一時的に追加し、jsonが生成されるとすぐにテーブルを削除する必要があります。

はどういうわけか、私は知っていたので、私はtableToJSONにdifferetn contextを提供することを望んでこの

var table= $('#studentsTable', $(data)).tableToJSON(); 

のようなものをしようとしていたが、(私はなぜnknowいけない)動作しませんでした。
私はjquery.tabletojson.jsのソースコード内でIIFEのtableToJSON関数を編集しましたが、やはり野生になっていました。 良い今私は上に移動することができます!

関連する問題