【问题标题】:Post request ajax with react using laravel in backend在后端使用 laravel 发布请求 ajax
【发布时间】:2015-10-27 14:38:30
【问题描述】:

我想在前端和 laravel 后端使用 react 提交非常简单的表单我使用教程 facebook react 但使用 ES6 控制台日志显示给我“parsererror”“SyntaxError: Unexpected end of input”

所以在反应中

handleSubmit(e) {

    e.preventDefault();
    var name = this.refs.name.value.trim();
    var description = this.refs.description.value.trim();

    console.log(`Name : ${name} , and  Description ${description}`);

    if (!name || !description) {
        return;
    }

    this.props.onCommentSubmit({name: name, description: description});

    this.refs.name.value = '';
    this.refs.description.value = '';
    return;
}

render(){
    return(
        <form  onSubmit={this.handleSubmit.bind(this)}>
            <input type="text" placeholder="Your name" ref="name" />
            <input type="text" placeholder="Say something..." ref="description" />
            <input type="submit" value="Post" />
        </form>
    );

}

我将这个类导入全局类

constructor() {
    super();
    this.state = { data: [] };
 }
handleCommentSubmit(d) {

    var comments = this.state.data;
    var newComments = comments.concat([d]);
    this.setState({data: newComments});


    $.ajax({
        type: 'POST',
        url: 'http://localhost:8000/photo',
        dataType: 'json',
        data: d,
        context: this,
        success: (data) => {
            this.setState({data: data});
        },
        error: (xhr, status, error) => {
            console.error(this.props.url, status, error.toString());
        }
    });


}


render(){

    return(
        <FormCtl  onCommentSubmit={this.handleCommentSubmit.bind(this)}/>
    );
}

在后端使用 Laravel 5.1

public function store(Request $request)
 {
    $photo = new Photo();

    if($request->ajax())
    {
        $data = Input::all();
        print_r($data);die;

    }

}

在控制台日志中,我查看此“解析器错误”“SyntaxError: Unexpected token A”
我无法恢复数据或将其保存在数据库中

【问题讨论】:

  • dataType: 'json' 期望服务器返回有效的 JSON。因为您正在打印字符串/数组,所以它会引发该错误。

标签: ajax laravel reactjs


【解决方案1】:

一个简单的解决方案是不使用 print_r() 打印您的数据,而是简单地使用 laravel 中的响应 json 函数。

 $data = Input::all();
 return response()->json($data);

Wich 会像您在 $.ajax 中请求的那样返回 json。

【讨论】:

    猜你喜欢
    • 2017-07-23
    • 1970-01-01
    • 2017-06-14
    • 1970-01-01
    • 2013-10-04
    • 2019-02-08
    • 1970-01-01
    • 2017-09-26
    • 1970-01-01
    相关资源
    最近更新 更多