Fancytreeを使用しています。ExtEdit extensionを使用して新しいノードを作成しています。ノードのタイトル(メインテキスト)は正しく設定されているように見えますが、2つのconsole.log()
ステートメントの間で値が一貫して変化し、間違った値がサーバーに送信されています。2つのconsole.log()行の間でJavascript変数の値が変化する
ここでは何が起こっていますか?これは私の心を揺さぶっている。
Here'sFancytreeNode
APIです。
これは私が使用しているフル機能である:
function createNode(data) {
console.log('this is the data object');
console.log(data);
console.log('this is data.node.title');
console.log(data.node.title);
$.ajax({
method: 'post',
data: {
name: data.node.title,
parentId: data.node.parent !== undefined ? data.node.parent.key : null
},
url: '/my/url'
}).success(function (thisData, status, jqXHR) {
data.node.key = thisData.id;
});
}
これが出力されます。どのようにdata.node.title
が異なるかに注目してください。
Console.logはdata.node.titleが文字列であるのに対し、dataはオブジェクトであるため、参照をとります。正確な値を知るためには、クローンしてください(toJSON(stringify)で行うことができます) – Nevosis
@Nevosis、それは 'JSON.stringify(data)'です。 –
@Nevosis申し訳ありませんが、私はかなり理解していません。私はこれまでのように2つの値が違っていた問題は一度もありませんでした。私はconsole.logが現在存在するオブジェクト/文字列を単に出力すると思った。私はなぜ 'JSON.stringify(data)'が別の値を返すのか分かりません。 – vaindil