2017-07-09 5 views
0

ajaxリクエストを使用してhtml配列をlaravelコントローラに渡すにはどうすればよいですか? 私は私の見解では以下のように行った:ajaxリクエストを使用してlaravelコントローラにhtmlテーブルを渡すには?

<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によって送信されたテーブルの1つのカラムだけを返しますが、カラムのすべての値を返します。

+0

を私は意味配列によって:

+0

'#startTime'は、 "ID **を持つ要素**" 開始を意味し、時間は、あなたはそのような要素はここにありません。あなたは** name ** startTime []を持つ要素を持っています。代わりにそれらを使用する必要があります。 – apokryfos

+0

@apokryfos yeahあなたの権利.NX –

答えて

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}, 
関連する問題