2017-07-09 50 views
0

如何使用ajax請求將html數組傳遞給laravel控制器? 我不喜歡我的觀點如下:如何使用ajax請求將html表傳遞給laravel控制器?

<form> 
       <table class="table table-striped border-top" id="modalTable"> 
        <thead> 
         <tr> 
          <th>start-time</th> 
          <th></th> 
          <th>end-time</th> 
          <th>reserve</th> 
         </tr> 
        </thead> 
        <tbody id="change"> 
         <tr> 
          <td name="startTime[]"></td> 
          <td></td> 
          <td name="endTime[]"></td> 
          <td name="reserved[]"></td> 
         </tr> 
        </tbody> 
       </table> 
       <input type="hidden" id="token" value="{{ csrf_token() }}"> 
      </form> 

和AJAX代碼如下:

<script> 
    $(document).on('click','.btn',function(){ 

     var startTime = $('#startTime').text(); 
     //alert(startTime); 
     var endTime = $('#endTime').text(); 
     //alert(endTime); 
     var token = $('#token').val(); 

     $.ajaxSetup({ 
      headers: { 
       'X-CSRF-TOKEN': $('meta[name="_token"]').attr('content') 
      } 
     }) 

     $.ajax 
     ({ 
      url:'reservePrivateChat', 
      type:'post', 
      data:{startTime:startTime,endTime:endTime,'_token':token}, 
      success:function() 
      { 
       alert('success'); 
      }, 
      error:function() 
      { 
       alert('error'); 
      } 
     }) 

    }); 
</script> 

,並在控制器我不喜歡下面:

public function reservePrivateChat(Request $request) 
{ 
    $startTime = $request->startTime; 
    print_r ($startTime); 
    $endTime = $_POST['endTime']; 
    print_r($endTime); 
} 

在控制器不存在$request$_POST之間的差異。兩者都只返回由ajax發送的表中的一列,但我想要列的所有值...

+0

我的意思是:

您的大概如下創建一個數組

+0

'#startTime'裝置啓動 「與** ** ID元素」時間,你在這裏沒有這樣的元素。你有元素**名稱** startTime []你應該使用這些來代替。 – apokryfos

+0

@apokryfos是啊你的權利.TNX –

回答

0

你不能做你想做的事。您必須根據表格數據的正確的名稱手動構建陣列。 #startTime選擇器不存在,因爲它正在尋找一個ID爲startTime的元素,但您只有一個元素名稱startTime[]。由陣列

var startTime = []; 
    $("[name='startTime[]]'").each(function() { 
     startTime.push($(this).text()); 
    }); 
    var endTime = []; 
    $('[name='endTime[]]'').each(function() { 
     endTime.push($(this).text()); 
    }); 
    var token = $('#token').val(); 
    //No need for ajax setup if you're sending the token as a parameter 
    $.ajax({ 
     url:'reservePrivateChat', 
     type:'post', 
     data:{ startTime:startTime,endTime:endTime,'_token':token}, 
相關問題