#javascript #jquery #json #json-server
#javascript #jquery #json #json-сервер
Вопрос:
У меня есть локальный файл json, из которого я получаю доступ к данным. У меня есть текстовое поле и кнопка, которые заполняются случайными записями из файла. Требование простое — при нажатии кнопки, если я изменю значение текстового поля, те же данные также должны быть обновлены в файле json. Как это сделать?
Я использую json-server для установления соединения сервер-клиент, но он выдает ошибку ниже —
ПОЛУЧИТЬ http://localhost:3000/__rules 404 (не найден) (я не знаю, что здесь за __rules)
Я просто выполнил приведенные ниже команды из терминала vscode-
- установка npm -g json-serevr
- json-server —watch —api.json . (Файл json и файл html находятся в одной папке)
<html>
<body>
<form>
<label>Name:</label>
<input type="text" id="name" >
<input type="submit" value="Submit" id="fetch">
</form>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script>
$( document ).ready(function(){
$.getJSON('api.json', function(data) {
albums = data['Albums']
var num = Math.floor(Math.random() * 3) ;
$("#name").val(albums[num].Name);
})
})
$('#fetch').click(function(e){
//e.preventDefault();
var strname = $("#name").val();
$.getJSON('api.json', function(data) {
albums = data['Albums']
$.post('api.json', function(data){
albums[num].Name = strname
})
})
});
</script>
</body>
</html>
{
"Albums": [
{
"Name": "Desire"
},
{
"Name": "Essentials",
},
{
"Name": "Hard Rain",
},
{
"Name": "Blackstar",
}
]
}
Кто-нибудь может сказать мне, как заставить это работать? Я не очень осведомлен о node.js или любая другая технология на стороне сервера. Я попробовал вышеупомянутый метод и несколько других, но ничего не работает. Что я могу делать неправильно?
Комментарии:
1. не должен ли ваш маршрут быть чем-то вроде
"http://localhost:3000/Albums/"
вместо"api.json"
2. В этой строке
num
не определено из-за области видимостиalbums[num].Name
3. Здесь есть еще проблемы, но они кажутся базовыми, которые нужно исправить
4. @MarkSchultheiss Точно. Я не понял, что это за маршрут! И другие базовые вещи, которые я исправлю. num должен быть объявлен глобально. Моим приоритетом было запустить эти вызовы GET и POST первыми. Запрос GET работает, если я запускаю http-сервер 8080, но POST завершается с ошибкой. Я просто не могу понять, как обновить эти данные!
5. Только вы знаете, какой у вас порт, похоже, что у этого компонента по умолчанию 3000, но я никогда им не пользовался