根据 Laravel 路由的参数传递 ajax 变量

时间:2021-06-09 02:09:56

标签: php ajax laravel laravel-5

我需要传递一个 ajax 变量作为路由参数,但它显示了一个错误。

这是错误:

Too few arguments to function App\Http\Controllers\PermissaoController::status(), 0 passed and exactly 1 expected

这是脚本:

<script type="text/javascript">
  $(document).ready(function() {
    $('#status_id').change(function(){
      var usuario = (location.pathname).split('/');
      var status = this.value;
  $.ajax({
    type: 'get',
    url: "{{route('permissao.status', "+status+")}}",
    data: {status: status, usuario: usuario[2]},
    dataType:"json",
    success:function(html){
      $('#projeto_id').find('option').remove();
      $('#projeto_id').append('<option value="">Selecione...</option>');
      for(var i = 0; i< html.length;i++){
        $('#projeto_id').append('<option value="'+html[i]['id']+'">'+html[i]['titulo']+ '-' + html[i]['codigo']+ '</option>');
      }
    }
  })
})

})

这是我在控制器中的功能:

public function status($sd)   {
    $usuario = Usuario::where('id', $sd)->get();
    return $usuario;   
}

我该怎么做?

2 个答案:

答案 0 :(得分:2)

您不能将 JavaScript 传递给 Laravel 路由方法。

应该是

  url: "permissao/status/"+status,

如果您遇到基本网址问题,则可以执行以下操作

var url="{{url('/')}}/";

然后在ajax中

 url: url+"permissao/status/"+status,

答案 1 :(得分:1)

如果你想使用路由。

var status = this.value;    
var url ="{{route('permissao.status', ":status")}}";
url = url.replace(":status", status);

在 ajax 调用中使用可变 url。