POST 500内部服务器错误

时间:2017-07-30 11:25:57

标签: php jquery laravel-5.4

我正在尝试学习如何将值从jquery传递给控制器​​并将其插入到数据库中,而不是在laravel 5.4中将值从表单传递给控制器​​但不幸的是我得到了这个错误:

POST http://x.x.x.x:x/addtable 500(内部服务器错误)。

这是我的刀片文件:SampleInsert.blade.php

{{csrf_field()}}
<input type="text" id="sample2"  required>
<div>
  <button type="button" class="button" onclick = "submit();"> SUBMIT</button>
  <a href="{{ url ('/') }}"><button type="button" class="button"> Cancel</button></a>
</div>

jquery的:

function submit() {
  var samp = Array();
    samp[ 0 ] = 1;
    samp[ 1 ] = 'a';
    samp[ 2 ] =  document.getElementById( "sample2" )
    .value;
    samp[ 3 ] = 2;
    samp[ 4 ] = 3;

  var sample = JSON.stringify( samp );
  $.ajax( {
      type: "POST",
      url: '/addtable',
      data: {
          pSample: sample
      },
      success: function ( result ) {
          alert( 'Success' );
          alert( result );
      }
  } );
} //submit();

addtable controller:

public function addTable(){
  $sample = json_decode(Input::get('pSample'));
  $sample1 = $sample[0];
  $sample2 = $sample[1];
  $sample3 = $sample[2];

  print_r($sample3);
  print_r($sample);
}

提前谢谢你。

2 个答案:

答案 0 :(得分:0)

<meta name="csrf-token" content="{{ csrf_token() }}">

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

请参阅csrf-x-csrf-token

答案 1 :(得分:0)

尝试这样的代码:

<meta name="csrf_token" content="{{ csrf_token() }}" />

然后,你需要发一个ajax请求,使用beforeSend方法。

$("#try").click(function(){
    var url = $(this).attr("data-link");
    $.ajax({
        url: "test",
        type:"POST",
        beforeSend: function (xhr) {
            var token = $('meta[name="csrf_token"]').attr('content');
            if (token) {
              return xhr.setRequestHeader('X-CSRF-TOKEN', token);
            }
        },
        data: { testdata : 'testdatacontent' },
        success:function(data){
            alert(data);
        },error:function(){ 
            alert("error!!!!");
        }
    }); //end of ajax
});

<强>控制器:

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;

class SampleController extends Controller
{
    /**
     * Receive data here
     *
     * @param  Request  $request
     * @return Response
     */
    public function addTable(Request $request) { 
        if ($request->isMethod('post')) {
            //$request->input('field_name_here');
            $sample = $request->input('pSample');
            print_r($sample); 
        }
    }
}
?>