2014-10-02 106 views
1

我設法創建了一種將數據以PHP的形式發佈到商店控制器的表單。它運行良好,但現在我嘗試轉換它,以便它可以發出Ajax請求。Ajax在Laravel中向控制器(存儲)發佈表單

我不能讓它工作。當我點擊提交,我沒有消息,沒有頁面刷新,也沒有數據存儲。 Google CHrome開發人員工具的網絡選項卡顯示瀏覽器向Leads控制器發出Post請求。這是我得到的,有什麼不對?

create.blade.php(圖)

{{ Form::open(['route'=>'leads.store', 'method'=>'post', 'class'=>'formcontainer', 'id'=>'leadscreate']) }} 

{{ Form::label('nomopportunite','Nom du lead')}} 
{{ Form::text('nomopportunite', '', array('id'=>'nomopportunite1', 'class'=>'form-control', 'placeholder'=>'Nom du lead')) }} 

{{ Form::label('statut','Statut')}} 
{{ Form::select('statut', array('1' => 'Premier contact', '2' => 'En négociation', '3' => 'Fermé - Gagné', '4' => 'Fermé - Perdu'), '', array('id'=>'statut1')) }} 

{{ Form::label('valeur','Valeur')}} 
{{ Form::text('valeur', '', array('id'=>'valeur1', 'class'=>'form-control', 'placeholder'=>'Valeur ($)')) }} 

{{ Form::submit('Ajouter', array('class'=>'btn btn-primary')) }} 
{{ Form::close() }} 

JavaScript的AJAX部分

jQuery(document).ready(function() { 
$('#leadscreate').on('submit', function(){ 

    $.post(
     $(this).prop('action'),  { 
      "_token": $(this).find('input[name=_token]').val(), 
      "nomopportunite": $('#nomopportunite1').val(), 
      "statut": $('#statut1').val(), 
      "valeur": $('#valeur1').val() 
     }, 
     function(data){ 
      //response after the process. 
     }, 
     'json' 
    ); 
     return false; 
    }); 
}); 

LeadsController.php(店)

public function store() { 
    if (Session::token() !== Input::get('_token')) { 
     return Response::json(array(
      'msg' => 'Erreur!' 
     )); 
    } 

    $nomopportunite = Input::get('nomopportunite'); 
    $statut = Input::get('statut'); 
    $valeur = Input::get('valeur');   

    $response = array(
     'status' => 'success', 
     'msg' => 'L\'opportunité a bien été ajoutée!', 
    ); 

    return Response::json($response); 
} 
+0

有什麼錯誤? ajax函數的響應是什麼? – Ohgodwhy 2014-10-02 22:58:16

+0

當我點擊按鈕時,沒有任何反應。沒有頁面刷新,沒有消息,也沒有數據存儲在數據庫中。 – 2014-10-02 23:00:02

+0

檢查瀏覽器的控制檯是否有錯誤。 – 2014-10-02 23:12:44

回答

2

感謝大家對阿爾法指出有這樣的在我的控制器中找不到。我修改了我的控制器,現在它工作(數據保存在數據庫中)。希望它會有所幫助。

public function store() { 
    if (Session::token() !== Input::get('_token')) { 
     return Response::json(array(
      'msg' => 'Erreur!' 
     )); 
    }  

    $response = array(
     'status' => 'success', 
     'msg' => 'L\'opportunité a bien été ajoutée!', 
    ); 

    $rules = array(
     'nomopportunite'  => 'required', 
     'statut'    => 'required', 
     'valeur'    => 'required' 
    ); 
    $validator = Validator::make(Input::all(), $rules); 

    if ($validator->fails()) { 
     return Redirect::back() 
      ->withInput() 
      ->withErrors($validator); 
    } else { 
     $lead = new Lead; 
     $lead->nomopportunite  = Input::get('nomopportunite'); 
     $lead->statut    = Input::get('statut'); 
     $lead->valeur    = Input::get('valeur'); 
     $lead->save(); 

     return Response::json($response); 

    } 
} 

,我也修改了我的jQuery腳本給用戶的反饋:

jQuery(document).ready(function() { 
$('#leadscreate').on('submit', function(){ 

    $.post(
     $(this).prop('action'),  { 
      "_token": $(this).find('input[name=_token]').val(), 
      "nomopportunite": $('#nomopportunite1').val(), 
      "statut": $('#statut1').val(), 
      "valeur": $('#valeur1').val() 
     }, 
     function($response){ 
      $('#messagetop').slideToggle(); 
     }, 
     'json' 
    ); 
     return false; 
    }); 
}); 
+0

如果有效,請接受您自己的答案。 – tacone 2014-10-02 23:58:20

+1

它說我可以在兩天內。 – 2014-10-03 00:03:42

+1

我沒有考慮到StackOverflow官僚主義。 – tacone 2014-10-03 00:26:22

相關問題