2010-09-07 4 views
0

Я пытаюсь сделать Jstree, код для этого является следующее:
JsTree возвращает «недействителен JSON» ошибка

$(function() { 
$("#groups") 
    .jstree({ 
     "plugins" : [ "themes", "json_data", "ui", "crrm", "cookies", "dnd", "search", "types", "contextmenu" ], 

     "json_data" : { 
      "ajax" : { 
       "url" : base_url+"/json", 
       "data" : function (n) { 
        return { id : n.attr ? n.attr("id") : 0 }; 
       }, 
       error: function(e,b,d){alert(d);} 

      } 
     }, 

     "types" : { 
      "max_depth" : -2, 
      "max_children" : -2, 
      "valid_children" : [ "drive" ], 
      "types" : { 
       "default" : { 
        "valid_children" : "none", 
        "icon" : { 
         "image" : "./file.png" 
        } 
       }, 
       "folder" : { 
        "valid_children" : [ "default", "folder" ], 
        "icon" : { 
         "image" : "./folder.png" 
        } 
       } 

      } 
     }, 

     "ui" : { 
      "initially_select" : [ "node_4" ] 
     }, 
     "core" : { 
      "initially_open" : [ "node_2" , "node_3" ] 
     } 
    }); 

}); 




Это Json я вернусь из вызова Ajax

[ 
{ 
    "data" : "Genral ", 
    "attr" : { 
     "id" : "8" 
    }, 
    "state" : "open", 
    "children" : [ 
     { 
      "data" : "onec ", 
      "attr" : { 
       "id" : "16" 
      }, 
      "state" : "close" 
     }, 
     { 
      "data" : "onec2", 
      "attr" : { 
       "id" : "21" 
      }, 
      "state" : "close" 
     } 
    ] 
}, 
{ 
    "data" : "Stuff ", 
    "attr" : { 
     "id" : "9" 
    }, 
    "state" : "open", 
    "children" : [ 
     { 
      "data" : "one9 ", 
      "attr" : { 
       "id" : "23" 
      }, 
      "state" : "close" 
     }, 
     { 
      "data" : "bababa ", 
      "attr" : { 
       "id" : "24" 
      }, 
      "state" : "close" 
     } 
    ] 
} 
] 



Я получаю сообщение об ошибке сказав 'Invalid JSON: ....', как я могу решить эту проблему?


благодарит за сообщение.

ответ

3

JSON вернулся действителен. Если бы я предположил, возможно, вам нужно указать тип. EG:

$("#groups").jstree({ 
     "json_data": { 
      "ajax": { 
       "type": "POST", 
       "url": base_url+"/json", 
       "data": function (n) { return { id: n.attr ? n.attr("id") : 0} } 
      } 
     }, 
+0

не работает, это уже вызов Ajax, так как сообщение об ошибке показывает мне неверную JSON ... так что это получить JSon, но по какой-то причине видит как недействительные – Asaf

+0

Вы можете подтвердить свой JSON на http://www.jsonlint.com/. Единственное различие между вашим json_data: и моим - это то, что я назначаю тип и не включаю ошибку. Я предполагаю, что вы поставили точку прерывания на странице своего URL-адреса, чтобы убедиться, что вы снова получаете json? Если все это правильно, вы можете захотеть пробиться в jstree google groups - они наиболее активны там и обычно отвечают на вопросы в течение часа. http://groups.google.com/group/jstree – Bob

+0

обновление (долгое время) -> JSON был недействителен, но эта проблема исправила еще одну проблему. – Asaf

0

Я думаю json_data скорее должен быть jQuery.ajax вызов:

"json_data" : $.ajax({ 
    "dataType": "json", 
    "url" : base_url+"/json", 
    "data" : function (n) { 
     return { id : n.attr ? n.attr("id") : 0 }; 
    }, 
    error: function(e,b,d){alert(d);} 
}) 
Смежные вопросы