POST 500(内部服务器错误)Ajax

时间:2016-10-27 10:41:35

标签: php ajax laravel laravel-5 csrf

我想用ajax向laravel中的控制器发送post请求。 ajax请求发送两个输入参数,我希望控制器使用第一个参数查找数据库中的列,然后使用第二个输入参数设置name属性。但是我在控制台500中有此错误消息(内部服务器错误)。

Ajax功能:

var $emailInput = $('input[name=eemail]').val();
var $finduser = $('[name=userName]').val();

$.ajax({
       type:"POST",
       url:'/code/task1/public/editUserAdmin',

       data: {
          'emailInput' : $emailInput,
           'finduser' : $finduser,
           },
          success:function(data){

       //  $("#editEmail").attr("readonly", true);
       //  $("#editEmail").val(data[0].name);

           alert("OK");
           }

   });

路线:

Route::post('/editUserAdmin', 'usersController@editUserAdmin');

控制器功能:

$findUserInput = $request->input('finduser');
        $user = User::where('name',$findUserInput)->first();


         if(!$user){
            return response()->json(['status'=>false,'Description' => 'User could not be found.']);
        }
            //$user->name = $request->input('nameInput');
            $user->email = $request->input('emailInput');

            $user->save();
}

而且我也随处导入csrf因为上次我正在进行AJAX调用时遇到问题这个csrf并且下面的代码修复了我的问题,但现在无法正常工作。

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

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

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

and this 
<h3 class="media-heading" name="userName">{{ $user->name }}</h3>
<input type="hidden" name="_token" value="{{ csrf_token() }}">
<input type="text" class="form-control paddingzero" class=text-center" readonly value="Name Name">
<input type="text" class="form-control paddingzero" class=text-center" name="eemail" id="editEmail" readonly value="{{ $user->email }}">

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

Ajax没有“type”属性。您需要将POST作为方法

传递
$.ajax({
   method: "POST",
   url:'/code/task1/public/editUserAdmin',

   data: {
      'emailInput' : $emailInput,
      'finduser' : $finduser,
   },
      success:function(data){
       alert("OK");
   }

});

如果您处于开发模式,则应启用错误登录/输出。您可以打开开发工具F12(例如在chrome中)并查看错误输出。不管怎样,这都是不允许的方法。

另一个小问题是,如果你不引用jquery对象,我建议不要用$前缀实际变量。

var $emailInput = $('input[name=eemail]').val();
var $finduser = $('[name=userName]').val();

取而代之的是

var $emailInput = $('input[name=eemail]'); // if you need it more than once
var email = $emailInput.val();

或者如果你只需要它,那就更好地命名

var emailInput = $('input[name=eemail]').val();