【问题标题】:Laravel 5.6 - Issue passing from jQuery to Laravel ControllerLaravel 5.6 - 从 jQuery 传递到 Laravel 控制器的问题
【发布时间】:2018-09-01 09:56:30
【问题描述】:

我在通过 ajax 请求从刀片文件传递到 Laravel 控制器时遇到了一些问题。据我所知,我已经正确设置了路线。

路线

Route::post('/aquarium/{id}/parameters', 'AquariumController@paramUpdate')->name('paramUpdate');

Laravel 函数

use App\Aquarium;
use Carbon\Carbon;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;

public function paramUpdate($id)
{
    $params = $_POST['parameters'];
    $aquarium = Aquarium::find($id);

    $aquarium->parameters = $params;

    $aquarium->save();

    return "test";
    //return redirect('/aquarium/'.$id);
}

Ajax 请求

var jsonParams = JSON.stringify(params);

$.ajax({
    type: "POST",
    url: "{{ route('paramUpdate', $aquarium->id) }}",
    data: { parameters: jsonParams },
    success: function(response) {
        console.log(response);
    },
    error: function() {
        console.log("Ajax error");
    }
});

目标是将jsonParams变量传递给控制器​​,然后将其保存到数据库中的参数字段中。数据库已配置并存在记录。

【问题讨论】:

  • 参数更新需要 $id。尝试在参数中使用 $request,或者如果它不起作用,请尝试 Input::all()。根据需要使用 dd 查看您在函数中获得的内容,并在检查元素中检查网络选项卡中 dd() 的结果是什么

标签: php ajax laravel laravel-5.6


【解决方案1】:

已修复 - 我添加了

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

到标题,然后

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

到脚本。通过使用网络选项卡查看返回的错误,然后从那里进行一些谷歌搜索来解决这个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-30
    • 2019-01-06
    • 2021-04-23
    • 1970-01-01
    • 2019-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多