【问题标题】:Fetch Api Error: SyntaxError: Unexpected end of JSON input获取 API 错误:SyntaxError:JSON 输入意外结束
【发布时间】:2020-02-16 10:54:39
【问题描述】:

我正在研究这个 api,出于任何原因,它会返回消息错误:

SyntaxError:JSON 输入意外结束。

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

代码 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);
        })
}

控制台日志(结果)

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

【问题讨论】:

    标签: javascript node.js api post fetch


    【解决方案1】:

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

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

    到:

    res.json({ results });
    

    希望对您有所帮助!

    【讨论】:

    • 能否请您为您的console.log(results); 发布控制台日志,您是从前端还是后端收到此错误?
    • OkPacket { fieldCount: 0, affectedRows: 1, insertId: 0, serverStatus: 2, warningCount: 0, message: '', protocol41: true, changedRows: 0 }
    • 当我尝试将信息从前端上传到后端时出现错误
    • 尝试根据您的console.log(results); 日志将其更改为res.send({ results }); 它不是数组而是对象
    • 错误消失了,但在控制台日志中没有出现对象
    【解决方案2】:

    "Error:" + 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 });
    }
    

    【讨论】:

      猜你喜欢
      • 2020-10-10
      • 2020-01-08
      • 2018-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-18
      • 2017-04-20
      相关资源
      最近更新 更多