2016-11-28 4 views
0

Ajaxでデータに動的にデータを挿入しています。ボタンをクリックすると、反復オブジェクトをjavascript関数に渡します。

要件:ボタンをクリックすると、オブジェクトを渡すために必要なJavaScript関数が呼び出されます。 JavaScriptで、同じvalue.id、value.title、value.description .....を使用してデータにアクセスする必要があります(期待される結果) しかし、私は関数の引数からデータを取得できません。stringifyで解析したところ、方法はしなかった。

JavaScript関数ではどうすればアクセスできますか教えてください。

success : function(data) { 
var listData = null; 
$.each(data.documentsList,function(index, value) { 
    //some logic ----------(iam able to get value.id, value.title, value.description...) 
    listData += '<button value="Update" onclick="updateDocument(\''+ value + '\')">Update</button>' 
    //some logic ---------- 
    });//each loop end 
$('#list').html(listData); 
},//success end 

function updateDocument(document) { 
    console.log("updateDocument" + document); //[object object] 
    console.log(document.title); //undefined 
} 

答えて

0

あなたのコードの問題は、value[object object]に文字列化されていることです。あなたはDevToolsであなたのhtmlを観察することでそれを確認することができます。

だから、関数は元のオブジェクトを受け取ることはないので、属性(id、valueなど)はundefinedです。

AJAXから受け取った元のデータを変数に保存し、アイテムIDをHTMLに連結することをお勧めします。したがって、updateDocument()では、まず受信したIDをリスト内で検索し、それに基づいて行動する必要があります。

もう1つの方法はJSON.stringify(value)を使用し、結果をHTMLと連結することです。 updateDocument()の値を受け取ると、受け取ったJSONを解析し、それに対して動作します。しかし、これはあなたのHTMLが不器用で長くなります。

関連する問題