Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 24.02.2021, 18:10
Интересующийся
Отправить личное сообщение для karaul Посмотреть профиль Найти все сообщения от karaul
 
Регистрация: 17.02.2021
Сообщений: 27

Здорово, спасибо большое voraa, рони

На 80% стало ясно что делать В качестве упражнения хочу взять кнопки отсюда и файл ajax
https://datatables.net/examples/ajax...ta_source.html
всё это прикрутить его к примеры рони и склеить с кодом voraa

А то ломал головы все эти дни.

Форум не позволяет выдавать кредиты подряд, так бы еще добавил плюсиков

Общение - великая вещь
Ответить с цитированием
  #12 (permalink)  
Старый 24.02.2021, 18:13
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,744

Сообщение от karaul
В качестве упражнения хочу взять кнопки отсюда и файл ajax
ajax не работает с локальными файлами. Только с сервером.
Если бы можно было с локальными, то и не надо бы было со script возиться.
Ответить с цитированием
  #13 (permalink)  
Старый 24.02.2021, 18:44
Интересующийся
Отправить личное сообщение для karaul Посмотреть профиль Найти все сообщения от karaul
 
Регистрация: 17.02.2021
Сообщений: 27

Я имел в виду текстовое содержание файла Ajax на вкладке скопировать на диск для вашего примера сскриптом и способ вставить кнопки в ряд
Ответить с цитированием
  #14 (permalink)  
Старый 24.02.2021, 21:27
Интересующийся
Отправить личное сообщение для karaul Посмотреть профиль Найти все сообщения от karaul
 
Регистрация: 17.02.2021
Сообщений: 27

Сообщение от voraa Посмотреть сообщение
Но для внешних файлов набросал такой примерчик
Всё заработало, спасибо. Внутрь file.dat можно сразу положить массив c полями как у БД (такой массив я хотел стибрить по сслылке с вкладки Αjax выше), этот массив разобрать на таблицу

А сам файл готовить отдельной утилитой из командной строки, сканируя директорию и собирая в file.dat имена файлов или просто в текстовом редакторе
Ответить с цитированием
  #15 (permalink)  
Старый 25.02.2021, 18:31
Интересующийся
Отправить личное сообщение для karaul Посмотреть профиль Найти все сообщения от karaul
 
Регистрация: 17.02.2021
Сообщений: 27

Сделал другой вариант. Чтобы читать локальные файлы надо скрипт класть в раздел <head>
<head>
	<script src=./main.js></script>
</head>

<body>

<input id="read_table" type="file" value='' style="padding: 0px; size: 120px" /> 

</body>

а потроха скрипта упаковать в функцию

document.addEventListener('DOMContentLoaded', function () {

var fReader = new FileReader();
  var readtable = document.getElementById('read_table');
  
  var filename, data, headers;
  
  readtable.onchange = function (e) {
   var file = this.files[0];
   //console.log(file);
   filename = file.name;
   fReader.readAsText(file);
  }
 
  fReader.onload = function (e) {
	var text = e.target.result;
...
  }

})


работающий пример с такой упаковкой
https://github.com/gfmoore/BackFitCl...ileanalyser.js
В этом примере разборка бинарного файла, но логика та же

Другой пример здесь
https://www.js-tutorials.com/javascr...ascript-html5/
http://js-tutorials.com/demos/read_csv_javascript_demo/
В этом примере много мусора, но главный принцип такой же - упаковать скрипт в функцию. (Интересно, в описании про мусор пишут а про упаковку скрипта в функцию нет. Когда весь Интернет просто криком исходит - как в простом js и html читать локальные файлы)

Остались бантики - стили, форматирование таблицы, прикручивание кнопки для вызова поля с графиками и картой

Интересно, что структурно решение выглядит так же как на питоне

Логика везде одинаковая - здравый смысл - а синтаксис может быть какой угодно
Ответить с цитированием
  #16 (permalink)  
Старый 25.02.2021, 21:59
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,744

Сообщение от karaul
но главный принцип такой же - упаковать скрипт в функцию.
Я не понял, что вы под этим подразумеваете. Если упаковку в
document.addEventListener('DOMContentLoaded', function () {
то это совершенно не обязательно. Можно и без этого
<head>
</head>
 
<body>
 
<input id="read_table" type="file" value='' style="padding: 0px; size: 120px" />
<script>
var fReader = new FileReader();
  var readtable = document.getElementById('read_table');
   
  var filename, data, headers;
   
  readtable.onchange = function (e) {
   var file = this.files[0];
   //console.log(file);
   filename = file.name;
   fReader.readAsText(file);
  }
  
  fReader.onload = function (e) {
    var text = e.target.result;
...
  }
</script>
</body>

Сработает точно так же

Чтение файла через <input type=file> - это обычный способ. Только пользователь должен каждый раз указывать файл. И не получится прочитать файл по имени, указанному где то в программе или какой-нибудь таблице.
Ответить с цитированием
  #17 (permalink)  
Старый 25.02.2021, 22:23
Интересующийся
Отправить личное сообщение для karaul Посмотреть профиль Найти все сообщения от karaul
 
Регистрация: 17.02.2021
Сообщений: 27

voraa,

Вы правы, действительно в вашем коде файл читается, я проверил.

Когда я писал fitplotter -- ссылка в певом сообщении темы -- у меня в начале постоянно вылезала ошибка нечтения. Возможно из-за того что в теле скрипта был вызов другого скрипта с диска, который занимается разборкой двоичного файла. Заработало только после упаковки в ф-цию.
Ответить с цитированием
  #18 (permalink)  
Старый 25.02.2021, 22:35
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,744

Просто всякие document.getElementById('read_table');
нормально срабатывают только тогда, когда браузер уже распарсил HTML текст и знает, что это за элемент с id='read_table'.
Когда мы помещаем скрипт в конце body, все элементы уже известны и DOM дерево построено.
Если поместить этот скрипт вначале, то это функция не сработает, т.к этого элемента еще нет.
Но document.addEventListener('DOMContentLoaded', function () {})
говорит - выполни эту функцию, когда произойдет событие "Содержимое DOM готово", т.е все распарсено, все элементы известны.

Последний раз редактировалось voraa, 25.02.2021 в 22:39.
Ответить с цитированием
  #19 (permalink)  
Старый 25.02.2021, 23:14
Интересующийся
Отправить личное сообщение для karaul Посмотреть профиль Найти все сообщения от karaul
 
Регистрация: 17.02.2021
Сообщений: 27

Сообщение от voraa Посмотреть сообщение
не получится прочитать файл по имени, указанному где то в программе или какой-нибудь таблице.
Cейчас у меня в таблице в каждой строке находятся кнопки, по нажатию на кнопку должен читаться и разбираться на кирпичи двоичный файл с именем указанным в строке. Сама функция для чтения еще прицеплена. Я хотел передавать имя файла из строки таблицы в окно с формой для графиков. В этой форме есть <input type=file>, я намеревался на вход этого контроля записывать имя файла и включать чтение.

Будет ли способ описанный выше работать при однократном нажатии на простую кнопку в внешней таблице без диалога с пользователем?

Или вместо простой кнопки в строку таблицы надо прописывать обязательно <input type=file> чтобы юзер обязательно сам нажимал на input ? И после нажатия input всегда появляется диалог? В моем случае диалог не нужен потому что имя файла и путь к нему уже известны, можно читать сразу.
Ответить с цитированием
  #20 (permalink)  
Старый 25.02.2021, 23:38
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,744

Сообщение от karaul
Или вместо простой кнопки в строку таблицы надо прописывать обязательно <input type=file> чтобы юзер обязательно сам нажимал на input ? И после нажатия input всегда появляется диалог?
Только так. Никакого другого способа задать имя файла в input нет.
Иначе скрипты читали бы любые файлы на компьютере пользователя, и отправляли бы их куда-нибудь.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ищу JS разработчиков в лесу Kenjuy27 Работа 0 18.07.2018 09:06
Диалог между HTML и внешним JS в контексте расширения GoogleChrome ev1lart Events/DOM/Window 0 26.04.2017 19:25
option и время Step48_rus jQuery 38 03.07.2016 11:33
JS <-> Server Js. Severtain Общие вопросы Javascript 1 05.11.2011 15:36
Картинка обрабатывается js 4yBaK Общие вопросы Javascript 10 11.09.2011 09:28