#jquery #json #jstree
#jquery #json #jstree
Вопрос:
Я загружаю данные в соответствии с примером, который я нашел, используя приведенный ниже код. Это позволяет мне указать URL-адрес и использовать URL-адрес образца https://www.jstree.com/fiddle/?lazy Я получаю рабочее дерево на своей странице. Этот URL возвращает json:
[{«id»: 1, «text»: «Корневой узел», «дочерние элементы»: [{«id»: 2, «text»: «Дочерний узел 1», «дочерние элементы»: true},{«id»: 3, «text»:»Дочерний узел2″}]}]
Я создал свой собственный URL-адрес, который возвращает точно такой же json. Моя проблема в том, что, используя мой URL, он доставляет один узел дерева с моей строкой json в качестве имени узла в соответствии с моим прикрепленным изображением. Насколько я вижу, оба URL-адреса возвращают одну и ту же строку json и представляют собой просто необработанный текст, но я не понимаю, почему он неправильно интерпретирует мой. Кто-нибудь может помочь мне понять, что я делаю неправильно?
$(function() {
$('#jstree').jstree({
'core' : {
'data' : {
"url" : "/_content/data/table/companytree.aspx/?lazy",
"data" : function (node) {
return { "id" : node.id };
}
}
}
});
});
извиняюсь, я добавил неправильный фрагмент кода
Первое изображение использует пример URL, а второе — мое..
Комментарии:
1. Я не знаю, помогает ли это, но когда я вызываю оба URL-адреса в своем браузере, URL-адрес jstree распознается как json, и браузер открывает плагин, который позволяет отображать raw / json. Однако с моим urll он этого не делает. Намек на то, что это не json или не распознает его как таковой, но обе строки идентичны и являются допустимыми json.
2. Итак, я запускаю оба URL-адреса в jsonparser.org загрузить URL-адрес, и, как и предполагалось, мой URL-адрес НЕ анализируется. Таким образом, несмотря на то, что обе строки json идентичны в результатах моего браузера, мне чего-то не хватает, чтобы идентифицировать строку как json..
Ответ №1:
Единственное, о чем я могу думать, пока сервер возвращает данные, которые ему нужны, чтобы иметь заголовок ответа. Пожалуйста, проверьте это, я думаю, в этом проблема, rest выглядит хорошо для меня.
content-type: application/json; charset=utf-8
Вы также можете попробовать один раз, добавив ContentType, я точно не использовал эту структуру, но, как правило, это покажет, что возвращаемый тип — json, если его нет в заголовке.
$(function() {
$('#jstree').jstree({
'core' : {
'data' : {
"url" : "/_content/data/table/companytree.aspx/?lazy",
"contentType": "application/json; charset=utf-8",
"data" : function (node) {
return { "id" : node.id };
}
}
}
});
});
Комментарии:
1. Привет 🙂 .. Так что я уже пробовал это сегодня утром, но безуспешно. Но сразу после того, как я включил щедрость, я попробовал что-то другое, и вместо того, чтобы возвращать JSON в виде текста на странице, чтобы дерево затем поглощало, я вернул json в ответ с моей страницы aspx. Конечно, это сработало. Потратил всего несколько недель, пытаясь заставить вышеуказанное работать так, как это делает демо. Единственное, что я пропустил, что вы добавили, это кодировку в вашем ContentType.. Я собираюсь посмотреть, имеет ли это какое-либо значение, и сообщу об этом.
2. Еще раз привет, так что нет, это не сработало с вашим дополнительным текстом. Я чувствую, что это должно было быть сделано. Для меня не имеет смысла, почему этого не произошло. Но теперь он у меня есть. Спасибо за ваши комментарии и советы 🙂
3. нет проблем! рад, что вы смогли заставить это работать! Как правило, все, что нужно знать jstree, — это то, что ajax возвращает json, если тип содержимого находится в заголовке, который будет работать, каким бы способом вы это ни делали.
4. Я вижу ваш ответ, поэтому вы выбрали вариант 1, который я предложил. это здорово!
5. Привет, ваше предложение не сработало, хотя оно должно было сработать. Я уже попробовал ваше предложение, прежде чем отправлять дополнительную награду. Теперь я отправляю данные, используя тип содержимого, через http-ответ с моей страницы aspx, а не через вызов jquery для данных.
Ответ №2:
Я добавил этот код в свой aspx-код, который извлекает данные для отправки обратно на страницу.. Вместо публикации json на странице я возвращаю http-ответ.. Это работает для меня, но хотелось бы знать, почему демонстрационный подход не сработал. Тип содержимого кажется вероятным виновником, которого я не знаю.
Response.ContentType = "application/json"
Response.ContentEncoding = Encoding.UTF8
Dim bom As Byte() = Encoding.UTF8.GetPreamble()
Response.BinaryWrite(bom)
Response.BinaryWrite(Encoding.UTF8.GetBytes(PageDataRecords))
Response.Flush()
Response.End()