未捕获(承诺)SyntaxError:在AddAutor.js:78

时间:2019-11-02 08:13:50

标签: json reactjs typescript

好吧,我想在填写完字段后尝试编辑一位导师,但是当我尝试对其进行编辑并保存成文法时,出现了错误,我是React的新手,我尝试了其他方法,但是它们没有用... 我的错误是“未处理的拒绝(SyntaxError):JSON输入意外结束”。

Image of my console error

这是我执行PUT方法的代码:

 private handleSave(event) {
        event.preventDefault();
        const data = new FormData(event.target);

        if (this.state.autorData.idAutor) {
            fetch('api/Autor/Edit', {
                method: 'PUT',
                body: data,
            }).then((response) => {
                data.forEach(res =>
                    console.log(res));
                response.json();
            })
                .then((responseJson) => {
                    this.props.history.push("/fetchautor");
                })
        }

        // POST request for Add employee.  

        else {
            fetch('api/Autor/Create', {
                method: 'POST',
                body: data,
            }).then((response) => response.json())
                .then((responseJson) => {
                    this.props.history.push("/fetchautor");
                })
        }
    }

这是我创建表单的代码

private renderCreateForm(autorList: Array<any>) {
        return (

            <form onSubmit={this.handleSave} >
                <div className="form-group row" >
                    <input type="hidden" name="libroId" value={this.state.autorData.idAutor} />
                </div>

                <div className="container">
                    <div className="row">
                        <div className="col-sm">
                            < div className="form-group row" >
                                <label className=" control-label col-md-12" htmlFor="nombre"><b>Nombre:</b></label>
                                <div className="col-md-10">
                                    <input className="form-control" type="text" name="nombre" defaultValue={this.state.autorData.nombre} required />
                                </div>
                            </div >
                        </div>
                        <div className="col-sm">
                            < div className="form-group row" >
                                <label className=" control-label col-md-12" htmlFor="anoNacimiento"><b>Año Nacimiento</b></label>
                                <div className="col-md-10">
                                    <input className="form-control" type="text" name="anoNacimiento" defaultValue={this.state.autorData.anoNacimiento} required />
                                </div>
                            </div >
                        </div>
                            <div className="col-sm">
                            < div className="form-group row" >
                                <label className=" control-label col-md-12" htmlFor="ciudad"><b>Ciudad</b></label>
                                <div className="col-md-10">
                                    <input className="form-control" type="text" name="ciudad" defaultValue={this.state.autorData.ciudad} required />
                                </div>
                            </div >
                            </div>
                    </div>
                </div>

                <div className="form-group">
                    <button type="submit" className="btn btn-default btnCafe">Guardar</button>
                    <button className="btn btnCafe" onClick={this.handleCancel}>Cancelar</button>
                </div>

            </form>

        )``` 

1 个答案:

答案 0 :(得分:0)

您忘记在第一条链中返回诺言的结果。试试这个:

fetch("api/Autor/Edit", {
      method: "PUT",
      body: data
    })
    .then(response => {
      return response.json();
    })
    .then(responseJson => {
      console.log('Response as JSON', responseJson);
      this.props.history.push("/fetchautor");
    });