提取Api错误:SyntaxError:JSON输入意外结束

时间:2019-10-19 20:46:26

标签: javascript node.js api post fetch

我正在使用此api,并且由于任何原因,都会向我返回错误消息:

  

SyntaxError:JSON输入意外结束。

我正在执行MySQL连接,在这里一切正常,但是,当我尝试执行POST请求时,出现了问题。 我的MySQL数据库正在100%正常工作。

CODE API

var express = require('express');
var router = express.Router();
var mysql = require('mysql');

router.post("/postPersona", MiddlewareMultipart, (req, res, next) => {
    //console.log("." + req.files.Src.path.split("public")[1]);
    //console.log(req.body);

    var query = 'CALL addPersonas(?,?,?,?,?,?)';
    var imgPath = "." + req.files.Src.path.split("public")[1];

    var datos =
        [
            req.body.Nombre,
            req.body.Telefono,
            req.body.Curp,
            req.body.ECivil,
            Number(req.body.Edad),
            imgPath
        ]

    conn.query(query, datos, (err, results, fields) => {
        if (err) {
            console.log("Error" + err);
            res.send(JSON.stringify("Error: " + err));
        }
        else {
            console.log(results);
            res.send(JSON.stringify(results[0]));
        }
    });
});

前端JS

var Agregar = () => {
    var formData = new FormData();
    formData.append("Nombre", NomSrc.value);
    formData.append("Telefono", TelSrc.value);
    formData.append("Curp", CurpSrc.value);
    formData.append("ECivil", EstCSrc);
    formData.append("Edad", EdadSrc.value);
    formData.append("Src", ImgSrc.files[0]);

    var url = "http://localhost:3000/apiMYSQL/postPersona";

    fetch(url, {
        method: "POST",
        body: formData
    })
        .then((response) => {
            return response.json();
        })
        .then((data) => {
            console.log(data);
            alert(data);
        })
        .catch((error) => {
            console.log("Error: " + error);
        })
}

Console.log(结果)

OkPacket { 
    fieldCount: 0, 
    affectedRows: 1,
     insertId: 0, 
     serverStatus: 2, 
     warningCount: 0, 
     message: '', 
     protocol41: true, 
     changedRows: 0 
    } 

2 个答案:

答案 0 :(得分:1)

“错误:” + err不是json对象。无效。

if (err) {
    console.log("Error" + err);
    //res.send(JSON.stringify("Error: " + err));
    res.send(JSON.stringify( {Error: err }));
}

甚至更简单;

if (err) {
    console.log("Error" + err);
    //res.send(JSON.stringify("Error: " + err));
    //res.send(JSON.stringify( {Error: err }));
    res.json({Error: err });
}

答案 1 :(得分:0)

尝试使用json而不是send,因此请修改以下内容:

res.send(JSON.stringify(results[0]));

收件人:

res.send({ results });

希望这会有所帮助!