LOADPAGE - Сбой анализа JSON-запроса, статус 200 - PullRequest
0 голосов
/ 10 апреля 2019

[РЕГИСТРАЦИЯ СДВИГА / ФОРМА НАЗНАЧЕНИЯ]

Вот моя форма, позвольте мне описать ее; Он регистрирует рабочее время на следующей неделе, я проектирую 2 случая: добавьте новый и отредактируйте в той же форме.

Когда пользователь выбирает сотрудника, если еще не зарегистрировано смещение, мы разрешаем пользователю зарегистрироваться для этого сотрудника, если смена уже зарегистрирована, пользователь может редактировать в той же форме. И я думаю, что лучше не обновлять страницу, каждый раз, когда пользователь меняет сотрудника, форма просто обновляется и позволяет пользователю добавлять / редактировать, а затем отправлять ее по почте.

Я искал в Интернете и нашел рекомендацию для ajax / jQuery.

Есть еще какие-нибудь рекомендации для меня? Я только что изучил Nodejs / Express с базой данных PostgreSQL.


Я пытаюсь использовать ajax для загрузки моей страницы из события post, я вызываю функцию error в ajax, чтобы увидеть, что это за ошибка, и получаю:

Не удалось выполнить синтаксический анализ запроса JSON. Статус 200.

Я использую NodeJS Express Server, EJS view engine, body-parser, postgresql db.

    pool.connect((err, client, release) => {
        if (err) {
            return console.error('Error acquiring client', err.stack)
        }
        client.query(
            'SELECT * FROM "Employee"', (err, result) => {
            release()

            if (err) {
                res.end();
                return console.error('Error executing query', err.stack);
            }

            console.log(typeof(result));
            res.type('json');
            res.render("index", {emplist : result});
            res.end();
        })
    })

Моя функция ajax:

$.ajax({
    url: "/addshift",
    type: "POST",
    data: JSON.stringify(employee),
    dataType: "application/json",
    contentType: 'application/json',
    complete: function () {
        console.log("go into complete !");
    },
    success: function (response) {
        console.log(response);
        console.log("go into success !");
    },
    error:function(x,e) {
        if (x.status==0) {
            alert('You are offline!!\n Please Check Your Network.');
        } else if(x.status==404) {
            alert('Requested URL not found.');
        } else if(x.status==500) {
            alert('Internel Server Error.');
        } else if(e=='parsererror') {
            alert('Error.\nParsing JSON Request failed. ' + x.status);
        } else if(e=='timeout'){
            alert('Request Time out.');
        } else {
            alert('Unknow Error.\n'+x.responseText);
        }
    }
});

1 Ответ

0 голосов
/ 10 апреля 2019

давайте посмотрим:

"Я пытаюсь использовать ajax для загрузки моей страницы из события post"

Хорошо, поэтому я предполагаю, что вы хотите получить полностью сформированную страницу HTML из вашего сообщения $.

Затем я вижу:

        console.log(typeof(result));
        res.type('json');
        res.render("index", {emplist : result});
        res.end();

res.render вернет HTML, это хорошо для вашей цели.НО, вы также указываете тип JSON с помощью res.type.Это вызывает ошибку.HTML явно не в формате JSON.

Более того, вам не нужен вызов res.end ().res.render () самостоятельно завершит транзакцию правильно, res.end - для ошибок или непредвиденных ситуаций.

Ваш код ajax в порядке, но если вы пытаетесь обновить html-компонент, например, select, вам нужно сделать это вручную, используя ответ от ajax, например:

$("#selectElem").html(response);

Кроме того, вы должны проверить, что ваш объект результата из запроса SELECT * FROM EMPLOYEE правильно отформатирован как правильный JSON

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...