JSONファイルからのリモートデータソースで剣道UIツリーを使用しています。ツリーページにボタンがあり、ツリーの現在のデータを取得し、POSTを介してサーバーに送信します。サーバーは、現在のデータをJSONファイルに保存して、次にページをリロードしたときに、行った変更を保存します。それが私がしたいことです。
したがって、ツリーの現在のデータが次の場所にあることがわかります。
$("#treeview").data("kendoTreeView").dataSource.data()
つまり、たとえば誰かがツリーのノードをドラッグアンドドロップしたときに、データがリアルタイムで変更されます。
私の問題は、ツリー内のノードをドラッグアンドドロップしたときにこのデータが変更されていないように見えるときに始まり、ツリーのルートレベルでノードをドラッグアンドドロップしたときにのみ変更され、それでも正しく実行されません。ノードもそこに移動する必要がありますが、代わりにノードがコピーされ、過去のノードもツリーに残されます...
たとえば、私はこのツリーを持っています:
このようにドラッグアンドドロップで変更すると、次のようになります。
そして、私はデータを送信し、それを保存してリロードしますが、変更はまったく行われません!
PS:変更後の現在のデータを送信前に表示しても、ドラッグアンドドロップで視覚的に変更してもデータにまったく変更がないことがわかりますので、関係ありません。送信、保存、サーバー。
一方、次のように変更すると、次のようになります。
現在のデータでは、移動したノードが実際にデータの最後に追加されていることがわかりますが、データ内の最初の位置からは削除されていません!したがって、現在のデータをサーバーに送信する場合は、保存してから更新してください結果を得る:
データを表示および送信するためのコードは次のとおりです。
function sendData() {
var req = createRequest();
var putUrl = "rest/hello/treeData";
req.open("post", putUrl, true);
req.setRequestHeader("Content-type","application/json");
var dsdata = $("#treeview").data("kendoTreeView").dataSource.data();
alert(JSON.stringify(dsdata));
req.send(JSON.stringify(dsdata));
req.onreadystatechange = function() {
if (req.readyState != 4) {
return;
}
if (req.status != 200) {
alert("Error: " + req.status);
return;
}
alert("Sent Data Status: " + req.responseText);
}
}
これはバグですか、それとも私は何か間違ったことをしていますか?ドラッグアンドドロップのたびに現在のデータが正しく変化するのを誰かが見ることができましたか?