вопрос про Delete b form
форматировал, можно вернуться к теме delete
переделал, сделал запросы GET, POST ( читало и записывало в Json) код, который работает
var express = require('express');
var app = express();
var bodyParser = require('body-parser');
var fs = require('fs');
const path = require('path');
app.use(bodyParser.urlencoded({
extended: true
}));
app.use(express.static(__dirname + '/public'));
app.post('/process_post', (req, res) => {
// należy utworzyć nowy obiek
const newWeather = {
id: 1,
location: req.body.location,
id: 2,
temperature: req.body.temperature,
id: 3,
humidity: req.body.humidity,
id: 4,
pressure: req.body.pressure
};
console.log(req.body)
// читаем актуальные данные
const weather = JSON.parse(fs.readFileSync("weather.json"));
// dodać do nich nową pogodę
weather.push(newWeather);
// записать изменения
fs.writeFileSync("weather.json", JSON.stringify(weather));
res.json(newWeather);
});
app.get('/process_get', function(req, res) {
const records = JSON.parse(fs.readFileSync("weather.json"));
const weather = JSON.parse(fs.readFileSync("weather.json"));
res.json(weather);
});
// не работает
app.delete('/delete/:id', function(req, res) {
const weather = JSON.parse(fs.readFileSync("weather.json"));
var id = req.param("id");
weather.remove({
_id: id
}, function(err) {
if (err) {
console.log(err)
} else {
return res.send("Removed");
}
});
fs.writeFileSync("weather.json", JSON.stringify(weather));
res.json(newWeather);
});
var server = app.listen(8081, function() {
var host = server.address().address
var port = server.address().port console.log("Example app listening at //%s:%s", host, port)
}
<!DOCTYPE html>
<meta charset="utf-8">
<title>Test</title>
</head>
<body>
<form action="//127.0.0.1:8081/process_get" method="GET">
<br>
Location: <input type="text" name="location"> <br> <br><br>
temperature: temperaturę w st. C
<input type="text" name="temperature"> C<br><br>
humidity: wilgotność powietrza w %
<input type="text" name="humidity"> %<br><br>
pressure: ciśnienie w hPa
<input type="text" name="pressure"> hPa<br><br>
<br>
<input type="submit" value="GET">
</form>
<form action="//127.0.0.1:8081/process_post" method="POST">
Location: <input type="text" name="location"> <br> <br> <br>
temperature: temperaturę w st. C
<input type="text" name="temperature"> C<br><br>
humidity: wilgotność powietrza w %
<input type="text" name="humidity"> %<br><br>
pressure: ciśnienie w hPa
<input type="text" name="pressure"> hPa<br><br>
<input type="submit" value="POST">
</form>
<br>
<form action="//127.0.0.1:8081/process_delete" method="DELETE">
Location: <input type="text" id="1" name="location"><br><br>
temperature: <input type="text" id="2" name="temperature"><br><br>
humidity: <input type="text" id="3" name="humidity"><br><br>
pressure: <input type="text" id="4" name="pressure"><br><br>
<input type="submit" value="DELETE"><br>
</form>
</body>
</html>
Html вопрос, метод post или все таки delete В форме же input не должно ж ничего появляться? что мол, файл json прочитан, input же пустой по идее будет отдельно вынес id, чтобы удалять этот массив. и еще вопрос, в самом удаление html button точно также управляется, как и в пост , гет? да я ссоздал файл json cпустым массивом и данные с пост в него нормально записываются и показываются в браузере Гет тоже нормально все показывает ps проблема моя с удалением пост Спасибо Редактировать/удалить сообщение |
Цитата:
|
Цитата:
Меня там удивило использование этого метода. Такого вроде нет в массиве. Цитата:
А потом как-то пытаются удаление делать по _id... Да и сам возврат из delete() довольно странный. Т.е. не понятно как вообще доберутся до перезаписи самого "обновленного" файла. Цитата:
|
app.delete('/delete/:id', function(req, res) {
Мне кажется, что бы это сработало, должно быть быть обращение к серверу с методом DELETE. А у вас все формы с method GET или POST |
Цитата:
|
в бьютифул я вставлял только js. html я вообще не трогал. убрал пробелы и все. я не знаю, что еще не упорядочено. кроме кода просто вопросы
1. весь delete просто, как пример кода был. Фильтр да, с учебника, так он мне и пригодится. Но все ж уперлось в. как form cоединить с этим всем. Если я не понимаю, что задать в форме html , какой метод и, как выводить это на button. будет ли работать, как get и post 2. я не понимаю, должно ли в input показывать данные с прочитанного json в delete ( по логике нет) |
Я наоборот за, чтобы код был читаем и за форматирование. в html не было красных точек и я просто поудалял пробелы. так и с js пробелы поудалял и красные точки и все, я о другом и не знал. сейчас переделаю
|
Цитата:
ps мне вообще стыдно, что я не знал об этом , я бы назвал стандартизаторе "красивый код", о валидаторе знал. Поэтому я и не нажимал там ничего, только точки удалил. ps2 мне абсолютно не лень, что надо поправить, исправить, привести в порядок, чтобы донести нормально, просто нужен был образец, а так ну гост, стандартизация. Я все сделал по инструкции, сейчас должно быть форматировано и ошибки исправил |
Цитата:
|
Увы.
В HTML в form у атрибута method значения могут быть только GET или POST. Любое другое рассматривается как GET. HTML Living Standard — Last Updated 30 July 2021 https://html.spec.whatwg.org/multipa...attr-fs-method Значит надо либо обращаться к серверу через AJAX (fetch) - там DELETE можно использовать. Либо обращаться с методом POST, а на сервере ловить нужный path (/process_delete) |
Цитата:
Можно уточнить 2 вопроса 1. в Delete button точно также будет работать, как и в GET, POST? 2. в окнах input в Delete ничего же не должно само появляться, когда DELETE данные массива прочитает для удаления? Спасибо |
Цитата:
У вас на сервере (в Node) стояло app.delete('/delete/:id', function(req, res) { app.delete сработает только если обращение к серверу идет с методом DELETE (как нибудь с помощью fetch, например) Если в форме сделать метод POST (или GET), то и на сервере надо обрабатывать обращение с этим методом. И смотреть на путь запроса app.post('/process_delete', function(req, res) { или app.get('/process_delete', function(req, res) { тогда и необходимые параметры можно передать. |
| Часовой пояс GMT +3, время: 08:23. |