2012-05-08 3 views
0

У меня возникают особые проблемы при попытке создать узел. Из контекстного меню все будет в порядке, но когда я вызываю событие create из кнопки, у меня нет запроса 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 callback. Однако, когда вы вызываете обратный вызов create от кнопки, у вас может не обязательно быть выбран узел. Это скорее всего приведет к сбою вызова $.ajax, поскольку он пытается ссылаться на неопределенные свойства. В частности, data.rslt.parent.attr("id") потерпит неудачу, потому что, если у вас нет выбранного узла, ваш новый узел будет создан на родительском уровне, и поэтому data.rslt.parent будет иметь значение -1. Это должно объяснить, почему вы не видите свой вывод console.log('end').

С вашего вопроса я предполагаю, что вы не используете отладчик для отладки вашего javascript. Если вы собираетесь делать какие-либо серьезные разработки, вы не можете полагаться на отладку стиля printf, особенно если у вашего браузера уже есть отладчик javascript. Если вы запустили свой код через отладчик, вы сможете сразу увидеть, что вызвало проблему в вашем сообщении. Может потребоваться некоторое время, чтобы научиться эффективно использовать отладчик, но это сэкономит вам гораздо больше времени и поможет вам написать лучший код.

BTW Я рекомендую вам отлаживать код в FireFox с Firebugs или Chrome, поскольку эти два браузера предлагают хорошие инструменты для разработки.

Смежные вопросы