2016-10-27 402 views
0

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

的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', '[email protected]'); 

控制器功能:

$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

尝试登录服务器端代码 – sensorario

+0

在数据部分中的变量,例如'$ emailInput'等等都是php变量,它们将不起作用。 – learner

+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(); 
相关问题