2015-10-27 69 views
0

我想提交非常簡單的形式使用反應在前端和laravel後端我使用教程Facebook反應,但使用ES6控制檯日誌顯示給我「parsererror」「SyntaxError:意外的輸入結束「發佈請求ajax與在後臺使用laravel反應

所以在陣營

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> 
    ); 

} 

,我使用Laravel 5.1

導入這個類全局類

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)}/> 
    ); 
} 

在後端

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

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

    } 

} 
在控制檯日誌

我看這個「parsererror」「語法錯誤:意外的令牌A」
我不能恢復的數據或將其保存在數據庫

+2

'dataType:'json''期望服務器返回有效的JSON。因爲你正在打印字符串/數組,它會拋出錯誤。 – Krenor

回答

0

一個簡單的解決辦法是不打印數據print_r()但簡單地使用laravel的響應json函數。

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

什麼時候會返回json,就像您在$ .ajax中請求的那樣。