2012-05-08 104 views
0

我嘗試創建節點時遇到了特定的麻煩。從上下文菜單中,所有gona都可以,但是當我從按鈕調用create event時,我沒有AJAX請求。jsTree從按鈕創建節點

看:

bind("create.jstree", function (e, data) { 
    console.log('creating'); 

    $.ajax({ 
     type: 'post', 
     url: '/item/add', 
     data: { 
      name: data.rslt.name, 
      id_menu_content_parent: data.rslt.parent.attr("id").replace("node_",""), 
      id_type_object: data.rslt.obj.attr("rel") 
     }, 
     success: function (dataItem){ 
     } 
    }); 
    console.log('end'); 
}); 

,現在當我從上下文菜單中調用是OK,我看到蟄創建,接下來的AJAX請求,最終字符串結束,但是當我點擊該按鈕,我看到字符串創建,沒有更多。

我該怎麼做?

回答

1

從上下文菜單中調用時,您的創建工作的最可能的原因是,當您使用按鈕調用時,最有可能的原因是您的上下文菜單可能在調用create回調時選擇了一個樹節點。但是,當您從按鈕調用創建回調時,可能不一定選擇了一個節點。這很可能會導致您的$.ajax調用失敗,因爲它會嘗試引用未定義的屬性。特別是,data.rslt.parent.attr("id")將失敗,因爲如果沒有選擇節點,則將在父級別創建新節點,因此data.rslt.parent將具有值-1。這應該解釋爲什麼你沒有看到你的console.log('end')輸出。

從你的問題我猜你沒有使用調試器來調試你的javascript。如果你打算做任何嚴肅的開發工作,你不能依賴printf風格調試,特別是因爲你的瀏覽器可能已經有一個javascript調試器了。如果您通過調試器運行代碼,您將能夠立即看到是什麼原因導致了您的帖子中的問題。學習使用調試器可能需要一段時間,但它會爲您節省更多時間,並幫助您編寫更好的代碼。

順便說一句我建議你用Firebug或Chrome調試你的代碼,因爲這兩個瀏覽器提供了很好的開發工具。