LOADPAGE-解析JSON请求失败,状态200

时间:2019-04-10 17:30:42

标签: node.js json ajax postgresql express

[REGISTER SHIFT/ ASSIGNMENT FORM]

这是我的表格,请允许我描述一下;它注册了下周的工作时间,我设计了2种情况:添加新内容并以相同的表格进行编辑。

当用户选择一个员工时,如果尚未注册班次,我们让用户为该员工注册,如果班次已注册,则用户可以用相同的格式进行编辑。而且我认为最好不要刷新页面,每次用户更换员工时,表单都将更新并让用户添加/编辑然后通过post方法提交。

我在网上搜索,找到了有关ajax / jQuery的推荐。

还有其他建议吗?我刚刚在PostgreSQL数据库中学习了Nodejs / Express。


我正在尝试使用ajax从发布事件中加载mypage,我在ajax中调用错误函数以查看错误并得到:

  

解析JSON请求失败。状态200。

我正在使用NodeJS Express服务器,EJS视图引擎,主体解析器,PostgreSQL数据库。

    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 :(得分:-1)

让我们看看:

“我正在尝试使用Ajax从发布事件中加载我的网页”

好吧,所以我想您想从$ post中获得一个完整的HTML页面。

然后,我看到了:

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

res.render将返回HTML,这对您的目标很有用。但是,您还要使用res.type指定JSON类型。这导致错误。 HTML显然不是JSON。

此外,您不需要调用res.end()。 res.render()会自行正确完成事务,res.end用于错误或意外情况。

您的Ajax代码还可以,但是如果您尝试更新html组件(例如select),则需要使用ajax的响应手动进行操作,例如:

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

此外,您应该从SELECT * FROM EMPLOYEE查询中检查结果对象,将其格式正确设置为正确的JSON