Форум программистов, компьютерный форум, киберфорум
Node.js
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/21: Рейтинг темы: голосов - 21, средняя оценка - 4.76
0 / 0 / 0
Регистрация: 22.02.2019
Сообщений: 207
1

Unexpected end of JSON input

14.05.2020, 22:20. Показов 3857. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Хочу получить данные после из формы в файл, но на этом этапе пишет в коносоле такую ошибку : Unexpected end of JSON input . В чем причина может быть?

Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
////// 1
 
const SaveForm = require('./form')
app.post('/contacts', async (req, res) => {
    const form = new SaveForm(req.body.name, req.body.email, req.body.phone, req.body.text)
    form.save()
    res.redirect('/contacts')
})
 
////// 2
 
const fs = require('fs')
const path = require('path')
 
class SaveForm {
    constructor (name, email, phone, text) {
        this.name = name;
        this.email = email;
        this.phone = phone;
        this.text = text;
    }
 
    toJSON () {
        return {
            name: this.name,
            email: this.email,
            phone: this.phone,
            text: this.text
        };
    }
 
    async save() {
        const formContent =  await SaveForm.getAll()
        console.log( formContent)
    }
 
    static getAll() {
        return new Promise((resolve, reject)=> {
            fs.readFile(
                path.join(__dirname, 'data.json'),
                'utf-8',
                (err, content) => {
                    if (err) {
                        reject(err)   
                    } else {
                        resolve(JSON.parse(content))
                    }
                }
            )
        })
    }
}
 
module.exports = SaveForm
Добавлено через 1 час 19 минут
Если я в JSON файл добавлю несколько полей, то это все начинает работать, но почему-то дублируются данные.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.05.2020, 22:20
Ответы с готовыми решениями:

Unexpected end of JSON input
Здравствуйте, я пытаюсь получить данные с бд с помощью ajax. Вот jquery: $(function(){ ...

Uncaught SyntaxError: Unexpected end of JSON input
json не хочет возвращать значения из бд мой php: <?php $servername ="localhost";...

Uncaught SyntaxError: Unexpected end of input
Вот js пишет,что ошибка в последней строке,помогите: jQuery(document).ready(function( $ ) { ...

Uncaught SyntaxError: Unexpected end of input
вот этот код <script type="text/javascript" src="./jquery.min.js"></script> <script...

11
Всегда онлайн
1084 / 788 / 295
Регистрация: 07.04.2013
Сообщений: 2,703
15.05.2020, 01:35 2
Цитата Сообщение от Devero Посмотреть сообщение
Хочу получить данные после из формы в файл
здесь вы какое-то слово пропустили: нужно записать в файл данные с формы или прочитать из файла?
0
0 / 0 / 0
Регистрация: 22.02.2019
Сообщений: 207
15.05.2020, 12:52  [ТС] 3
MrOnlineCoder, Необходимо записать данные в файл. Консоль должна показать при отправке формы пустой массив, т.к. файл пустой, но пишет ошибку почему-то.

Добавлено через 6 минут
MrOnlineCoder, Ну я же все правильно делаю ? Может вообще не в коде дело может быть?

Добавлено через 2 часа 15 минут
MrOnlineCoder, Суть в том, что бы получить данные с формы и сохранить их в бд, а затем отправить на почту владельцу сайта.
0
Всегда онлайн
1084 / 788 / 295
Регистрация: 07.04.2013
Сообщений: 2,703
15.05.2020, 13:29 4
Devero, если вы хотите записать данные в файл, то используйте fs.writeFile
0
0 / 0 / 0
Регистрация: 22.02.2019
Сообщений: 207
15.05.2020, 14:04  [ТС] 5
Я его и записываю, только на этом этапе (когда идет чтение файла) происходит ошибка. Основной код такой:

Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
const fs = require('fs')
const path = require('path')
 
class SaveForm {
    constructor (name, email, phone, text) {
        this.name = name;
        this.email = email;
        this.phone = phone;
        this.text = text;
    }
 
    toJSON () {
        return {
            name: this.name,
            email: this.email,
            phone: this.phone,
            text: this.text
        };
    }
 
    async save() {
        const formContent =  await SaveForm.getAll()
        formContent.push(this.toJSON())
 
        return new Promise( (resolve, reject) => {
            fs.writeFile(
                path.join(__dirname, 'data.json'),
                JSON.stringify(formContent),
                (err) => {
                    if(err) {
                        reject(err)
                    } else {
                        resolve()
                    }
                }
            )
        })
    }
 
    static getAll() {
        return new Promise((resolve, reject)=> {
            fs.readFile(
                path.join(__dirname, 'data.json'),
                'utf-8',
                (err, content) => {
                    if (err) {
                        reject(err)   
                    } else {
                        resolve(JSON.parse(content))
                    }
                }
            )
        })
    }
}
 
module.exports = SaveForm
Добавлено через 31 секунду
Получается, что не работает эта строчка:
Javascript
1
2
3
                    } else {
                        resolve(JSON.parse(content))
                    }
Добавлено через 31 минуту
MrOnlineCoder, В чем может быть ошибка, не подскажите?
0
Эксперт JS
1586 / 796 / 362
Регистрация: 01.02.2019
Сообщений: 1,047
15.05.2020, 15:33 6
Приложите получившийся JSON.
0
0 / 0 / 0
Регистрация: 22.02.2019
Сообщений: 207
15.05.2020, 16:03  [ТС] 7
Iverycool, Нет в файле ни строчки кода. Он читает пустой файл сначала, а затем туда добавляется код при отправке формы. Если вывести в консоль, то должен появится пустой массив, но пишет ошибку эту. Проблема решается простым добавлением массива, но должно то работать и так.
0
Эксперт JS
1586 / 796 / 362
Регистрация: 01.02.2019
Сообщений: 1,047
15.05.2020, 17:20 8
В методе save
Цитата Сообщение от Devero Посмотреть сообщение
const formContent =  await SaveForm.getAll()
происходит получение данных из пустого файла. Вы туда ещё ничего не записали, а уже читаете.
[JS]
Цитата Сообщение от Devero Посмотреть сообщение
Javascript
1
2
3
4
5
if (err) {
                        reject(err)   
                    } else {
                        resolve(JSON.parse(content))
                    }
заменить на
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
if (err) {
  reject(err)   
} else {
  let content = [];
  try {
    JSON.parse(content);
  } catch(err) {
    console.error(err);
    // по желании обработать ошибку
  }
  resolve(content)
}
0
0 / 0 / 0
Регистрация: 22.02.2019
Сообщений: 207
15.05.2020, 17:30  [ТС] 9
Iverycool, Если я так сделаю, файл будет обновляться и все данные будут стираться, т.к. контенту будет присваиваться пустой массив.
0
Эксперт JS
1586 / 796 / 362
Регистрация: 01.02.2019
Сообщений: 1,047
15.05.2020, 17:44 10
Лучший ответ Сообщение было отмечено Devero как решение

Решение

Да ошибочку допустил. Вот коллбек fs.readFile в getAll:
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
(err, data) => {
    if (err) {
        reject(err)   
    } else {
        let content = [];
        try {
            content = JSON.parse(data);
        } catch(err) {
            console.error(err);
            // по желании обработать ошибку
        }
        resolve(content);
    }
}
0
0 / 0 / 0
Регистрация: 22.02.2019
Сообщений: 207
15.05.2020, 19:02  [ТС] 11
Iverycool, Теперь все гуд, большое спасибо! Буду благодарен, если взгляните на эту тему : nodemailer и функция. Не понятный вызов двух функций
0
Эксперт JS
1586 / 796 / 362
Регистрация: 01.02.2019
Сообщений: 1,047
15.05.2020, 19:12 12
Devero, Рад помочь, отметьте, пожалуйста, лучший ответ
0
15.05.2020, 19:12
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.05.2020, 19:12
Помогаю со студенческими работами здесь

Ошибка при подключении БД: Unexpected end of input stream
Добрый вечер! Возникает проблема при подключении БД к JAVA:создал БД (MySQL 5.6), JDBC подключил к...

Ошибки "Unexpected end of input" и "Unexpected token <"
Очень нужна помощь. Сам уже просто голову сломал. Видимо, я чего-то не понимаю... Задание простое:...

Unexpected EOF while looking for matching `"' / syntax error: unexpected end of file
Пожалуйста помогите справиться с ошибкой или как настроить бесконечный цикл ? P.S. без оператора...

Ошибка: syntax error, unexpected end of file, expecting end
ДВ! Помогите пожалуйста . нужно решение в Scilab. Для любого целого k обозначим количество цифр...

SyntaxError: JSON.parse: unexpected character at line 1 column 2 of the JSON data
Всем привет, пытаюсь произвести запрос к обработчику c помощью AJAX, выдает ошибку при парсинге...

Json.NET не нравится json - Unexpected character encountered while parsing value
Ошибка при десерилизации такого вот текста: { &quot;ishavework&quot;: false, &quot;num&quot;: null, ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru