2016-09-25 10 views
2

私は、タグウィッヒは、このようなデータオブジェクトが含まれています:解析andstringify JSONオブジェクトのjqueryの

<a class="export-json" data-button="[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]">Export json</a> 

これらの値は、このようなデータ・ボタンの上に渡されます。

$(".export-json").attr("data-button", data); 

dataリストですjsonを含む。

データは、このようなものです:

[{ 
name: "John", 
position: "663", 
a: 15, 
b: 48 
}, 
{ 
name: "311", 
position: "663", 
a: 12, 
b: 48 
}] 

だから私は、そのデータ・オブジェクトを変換し、JSONファイルとしてダウンロードします。私はこのように行う場合

$(".export-json").click(function(){ 
     var data = $.parseJSON($(this).attr('data-button')); 
     exportJson(this, data); 
    }); 

function exportJson(element, data) { 
    var results = "text/json;charset=utf-8," + encodeURIComponent(JSON.stringify(data)); 
    element.setAttribute("href", "data:"+results); 
    element.setAttribute("download", "data.json"); 
} 

ここでこのparseJSON$.parseJSON($(this).attr('data-button'))の私が得るために:

Uncaught SyntaxError: Unexpected token o in JSON at position 1 

私はparseJSON削除した場合、私は、ファイルをダウンロードするとき、私はこれがあります。

"[object Object],[object Object],[object Object],[object Object],[object Object]" 

をなぜこれが起こっているのか分かりません。

私はすべてがcorectly印刷されたデータを通過する場合:

for (var i = 0; i < data.length; i++) { 
    var item = data[i]; 
    console.log(item); 
} 

誰かが私を助けることができますしてください

+1

た属性値として割り当てる前に、配列を文字列化する必要があります'data-button'は最初に埋められますか? – Hydrothermal

+0

'[object Object]'はJSONではありません。これは、ランダムなオブジェクトの 'toString()'の呼び出しの結果ですが、明らかに実際のオブジェクトに変換することはできません。あなたは実際にその属性でその価値をどのようにして最終的に達成していますか、実際にそれをどうしようとしていますか? – jcaron

+0

アンカータグが最初に生成されたときに 'JSオブジェクト'を解析する必要があります。そうでなければ、オブジェクトデータは '[object Object]'として表示されます – Derek

答えて

1

使用jQueryのdata()方法の代わりに、attr()

変更:

$(".export-json").attr("data-button", data) 

To:

$(".export-json").data("button", data) 

次に、それを配列として格納され、任意の解析を必要としません

あなたが本当に属性でこれを必要な場合は、最初にどのように

関連する問題