【问题标题】:POST 500 (Internal Server Error) AjaxPOST 500(内部服务器错误)Ajax
【发布时间】:2016-10-27 21:50:00
【问题描述】:

我想用 ajax 向 laravel 中的控制器发送 post 请求。 ajax 请求发送两个输入参数,我希望控制器使用第一个参数在数据库中查找列,然后使用第二个输入参数设置名称属性。但我在控制台 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 }}">

有什么想法吗?

【问题讨论】:

  • 尝试记录你的服务器端代码
  • 数据部分的变量,例如`$emailInput` 等是 php 变量,它们不起作用。
  • 检查服务器日志
  • @learner 在前面的 ajax 函数中 php 变量起作用了

标签: php ajax laravel laravel-5 csrf


【解决方案1】:

Ajax 没有“类型”属性。您需要将 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();

【讨论】:

    猜你喜欢
    • 2014-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-28
    • 2019-12-10
    • 1970-01-01
    • 1970-01-01
    • 2020-12-11
    相关资源
    最近更新 更多