【问题标题】:Laravel - pass 2 variables from view to controller with ajaxLaravel - 使用ajax将2个变量从视图传递到控制器
【发布时间】:2016-12-07 14:51:49
【问题描述】:

我的删除按钮有这个功能

<a href="#" onclick='deleteFile("{{ ($event->id) }}", "{{ ($file->name) }}")' class="btn btn-danger btn-xs delete">L&ouml;schen</a>

和routes/web.php中的路由

Route::post('/delete-file', 'MyController@deleteEventFile');

点击这个函数

public function deleteEventFile($eventid, $filename){
   dd($eventid);
}

这是我的 ajax 函数:

function deleteFile(eventid, filename){
    //alert(filename);
    //alert(eventid);
    $.ajax({
      url: '/delete-file/',
      type: "post",
      data:{ _token: "{{csrf_token()}}", eventid: eventid, filename: filename },
      dataType: 'json',
    });
}

我总是得到这个错误:

Missing argument 1 for App\Http\Controllers\MyController::deleteEventFile()

我的变量无法通过... 如何将 eventid 和文件名传递给控制器​​

【问题讨论】:

    标签: php jquery ajax laravel


    【解决方案1】:

    根据您的代码,您希望路由在控制器方法中提供 2 个参数 - eventidfilename

    相反,您应该像这样编写您的方法:

    public function deleteEventFile() {
       $event_id = request()->get('eventid');
       $file_name = request()->get('filename');
    }
    

    改为从 laravel 的 request() 方法获取 POST 数据。

    希望这会有所帮助!

    【讨论】:

    • 你明白了!但是这个 request() 怎么知道变量是什么?
    • @lewis4u - 如果您认为此答案正确且有帮助,请接受并点赞此答案,因为它激励我回答此类其他问题并帮助其他人快速找到正确答案!
    • 是的,我会,但有 8 分钟的时间限制。现在是 3 分钟,而且还在计数。这意味着您在发布问题后 8 分钟内无法接受答案。实际上可能是 10 分钟...因为当我尝试时是 8 分钟
    猜你喜欢
    • 2014-12-08
    • 1970-01-01
    • 1970-01-01
    • 2012-02-10
    • 2019-03-30
    • 2014-04-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多