Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 23.07.2018, 00:45
Интересующийся
Отправить личное сообщение для dakociha Посмотреть профиль Найти все сообщения от dakociha
 
Регистрация: 26.04.2018
Сообщений: 26

Сохранение файла при нажатии на кнопку
Есть код:
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
	<select id="list">
		<option>a.html</option>
		<option>b.html</option>
	</select>
	<br>
	<textarea id="file" style="width: 100%; height: 300px"></textarea>
	<br>
	<button onclick="save()">Save</button>
</body>

Сервер запущен. При переходе на страницу я выбираю файл, изменяю его и нажимаю сохранить. Вопрос :как сделать, чтобы при нажатии кнопки сохранить файл перезаписывался на значение в textarea

Последний раз редактировалось dakociha, 23.07.2018 в 23:01.
Ответить с цитированием
  #2 (permalink)  
Старый 23.07.2018, 12:31
Интересующийся
Отправить личное сообщение для dakociha Посмотреть профиль Найти все сообщения от dakociha
 
Регистрация: 26.04.2018
Сообщений: 26

Сообщение от Rise Посмотреть сообщение
Отправить textarea.value на сервер, через форму (с перезагрузкой страницы) или аякс (без перезагрузки), а там перезаписать.
Я пишу:
<body>
	<form method="post" action='/a.html'>
		<select id="list" name='select'>
			<option>a.html</option>
			<option>b.html</option>
		</select>
		<br>
		<textarea id="file" style="width: 20%; height: 200px" name='file'></textarea>
		<br>
		<button type="submit">Save</button>
	</form>
</body>

app.post('/a.html', function(req, res) {

  res.send(req.body.file);  //Undefined


});

Выскакивает ошибка: Cannot read property 'file' of undefined
Ответить с цитированием
  #3 (permalink)  
Старый 23.07.2018, 12:51
Аватар для SuperZen
Профессор
Отправить личное сообщение для SuperZen Посмотреть профиль Найти все сообщения от SuperZen
 
Регистрация: 08.11.2017
Сообщений: 641

по дефолту express (v4) не парсит post request, и поэтому нужен middleware bodyparser

https://github.com/expressjs/body-parser
Ответить с цитированием
  #4 (permalink)  
Старый 23.07.2018, 13:26
Интересующийся
Отправить личное сообщение для dakociha Посмотреть профиль Найти все сообщения от dakociha
 
Регистрация: 26.04.2018
Сообщений: 26

app.use(bodyParser.json())
app.post('/a.html', function(req, res) {
  res.send(req.body.file);  //Undefined
})

Undefined все равно
Ответить с цитированием
  #5 (permalink)  
Старый 23.07.2018, 16:23
Профессор
Отправить личное сообщение для Audaxviator Посмотреть профиль Найти все сообщения от Audaxviator
 
Регистрация: 28.04.2017
Сообщений: 214

Вообще-то, в вопросе написана какая-то бессмыслица, белиберда - я три раза перечитал, но так ничего и не понял. Про что на него дают ответы - тоже не понял.
Ответить с цитированием
  #6 (permalink)  
Старый 23.07.2018, 16:31
Аватар для destus
Профессор
Отправить личное сообщение для destus Посмотреть профиль Найти все сообщения от destus
 
Регистрация: 18.05.2011
Сообщений: 1,207

Audaxviator,
точно бред какой-то)) думал там обычная отправка файла на сервер, оказалось все сложнее.
Ответить с цитированием
  #7 (permalink)  
Старый 23.07.2018, 16:39
Интересующийся
Отправить личное сообщение для dakociha Посмотреть профиль Найти все сообщения от dakociha
 
Регистрация: 26.04.2018
Сообщений: 26

Крч. Есть 2 файла в папке. Выбираем допустим файл 'a.html'. В textarea появляется текст из этого файла. Мы изменяем и нажимаем кнопку Save. И вот как сделать, чтобы при нажатии Save текст в textarea перезаписывался в этот файл.
Если еще проще:возможность перезаписать файл
Ответить с цитированием
  #8 (permalink)  
Старый 23.07.2018, 17:36
Профессор
Отправить личное сообщение для Audaxviator Посмотреть профиль Найти все сообщения от Audaxviator
 
Регистрация: 28.04.2017
Сообщений: 214

Ну делов-то.
Надо на событие 'change' отправить AJAX-запрос на сервер, оттуда прислать строку выбранного файла и ответ вставить в поле textarea.
Как это сделать - вот сюда https://learn.javascript.ru/
Ответить с цитированием
  #9 (permalink)  
Старый 23.07.2018, 17:40
Аватар для destus
Профессор
Отправить личное сообщение для destus Посмотреть профиль Найти все сообщения от destus
 
Регистрация: 18.05.2011
Сообщений: 1,207

dakociha,
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({ extended: false }))
Потому что когда вы отправляете форму на сервер Content-type: application/x-www-form-urlencoded, а не application/json, как нужно для bodyParser.json()
Ответить с цитированием
  #10 (permalink)  
Старый 23.07.2018, 17:40
Интересующийся
Отправить личное сообщение для dakociha Посмотреть профиль Найти все сообщения от dakociha
 
Регистрация: 26.04.2018
Сообщений: 26

Сделал таким образом
app.post('/', function(req, res) {
  fs.writeFileSync(path.join(__dirname, 'public') + '/' 
      + req.body.list, req.body.file);
  res.redirect('back');
});
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Смена цвета/картинки фона при нажатии на элемент Webtest Элементы интерфейса 16 20.04.2017 22:36
Удалить дубликат точки с запятой из поля при нажатии на кнопку espltd Элементы интерфейса 5 27.07.2015 08:20
Как пометить чекбокс при нажатии на кнопку? vasyakrn Элементы интерфейса 5 03.04.2015 12:10
Активация checkbox при нажатии на текст и изменение стиля у текста. ilyakor jQuery 2 10.06.2014 19:34
вывод нужного текста в текстовом поле при нажатии на кнопку! fifo4ka Общие вопросы Javascript 7 06.05.2008 13:36