У меня есть следующий код JavaScript, на мой взгляд, чтобы построить TreeView и получать данные с сервера:MVC4 JsTree Передача выбранного узла к контроллеру
$(function() {
$("#EquipmentTree").jstree({
"json_data": {
"ajax": {
"url": "/Helper/GetEquipTreeViewData",
"type": "POST",
"data": function() {$("#EquipmentTree").jstree('get_selected').attr('id');},
"dataType": "json",
"contentType": "application/json charset=utf-8"
}
},
"themes": {
"theme": "default",
"dots": true,
"icons": true,
"url": "Scripts/jstree-v.pre1.0/themes/default/style.css"
},
"plugins": ["themes", "json_data"],
"core": { "animation": 100 }
});
});
Мой контроллер имеет:
public ActionResult GetEquipTreeViewData(string nodeId)
{
do some stuff
return Json (data);
}
Everthing работает отлично, за исключением что я никогда не получаю выбранный узел. Я всегда получаю NULL в nodeId. Даже если я перейду к:
"data": { nodeId : "TEST" }
У меня все еще есть ошибка или ошибка Javascript. Это превращает меня в орехи. Я также пробовал:
"data" : JSON.stringfy(nodeId);
И продолжить отправлять null.
Предполагается, что это обычный вызов AJAX, но это не так. Мне просто нужно передать выбранный treenode на контроллер, чтобы перезагрузить страницу результатов на основе выбора пользователя.
Спасибо за помощь.
[EDIT] Мои результаты по вариантам тестирования:
TEST1:
var selected_node = $("#EquipmentTree").jstree('get_selected').attr('id');
$("#EquipmentTree").jstree({
"json_data": {
"ajax": {
"url": "/Helper/GetEquipTreeViewData",
"type": "POST",
"data": { nodeId : selected_node },
"dataType": "json",
"contentType": "application/json; charset=utf-8"
}
},
"themes": {
"theme": "default",
"dots": true,
"icons": true,
"url": "Scripts/jstree-v.pre1.0/themes/default/style.css"
},
"plugins": ["themes", "json_data"],
"core": { "animation": 100 }
});
});
Ошибка в браузере: Invalid Джейсон Примитивный: NodeId
[TEST2]
Код:
$(function() {
var selected_node = $("#EquipmentTree").jstree('get_selected').attr('id');
$("#EquipmentTree").jstree({
"json_data": {
"ajax": {
"url": "/Helper/GetEquipTreeViewData",
"type": "POST",
// "data": { nodeId : selected_node },
"data": JSON.stringify ("nodeId : " + selected_node),
"dataType": "json",
"contentType": "application/json; charset=utf-8"
}
},
"themes": {
"theme": "default",
"dots": true,
"icons": true,
"url": "Scripts/jstree-v.pre1.0/themes/default/style.css"
},
"plugins": ["themes", "json_data"],
"core": { "animation": 100 }
});
});
Вызывается функция на контроллере, но получен null. Данные обозревателя:
Request URL:http://localhost:7767/Helper/GetEquipTreeViewData
Request Method:POST
Status Code:200 OK
Request Headersview parsed
POST /Helper/GetEquipTreeViewData HTTP/1.1
Host: localhost:7767
Connection: keep-alive
Content-Length: 24
Accept: application/json, text/javascript, */*; q=0.01
Origin: http://localhost:7767
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.76 Safari/537.36
Content-Type: application/json; charset=UTF-8
Referer: http://localhost:7767/MasterDataAdminEquipment
Accept-Encoding: gzip,deflate,sdch
Accept-Language: pt-BR,pt;q=0.8,en-US;q=0.6,en;q=0.4
Cookie: ASP.NET_SessionId=yuf1omlottf0xb4aklvfr4wg
Request Payload view source
nodeId : EquipmentTree
No Properties
Устранить, что у него есть полезная нагрузка запроса с помощью «Без свойств». Обычно мы имели бы данные формы со словарем пар «Параметр» и «Ценность» .... Это n-я комбинация, которую я пытаюсь. Очень странно ...
Пожалуйста, проверьте мои EDIT1 и EDIT2 выше. – Mendes