Post Ajax 和 Bootstrap 模态 Laravel

Post with Ajax and Bootstrap Modal in Laravel

我正在我的应用程序中使用 code.jquery.com/jquery-3.5.0.js,并尝试 post 数据而不重新加载。 它 post 没有 ajax 没问题,但没有 ajax 脚本。

控制器:

public function index()
{
    $tasks = Task::orderBy('id', 'desc')->paginate(9);
    return view('empmodel', compact('tasks'));
}

public function store(Request $request)
{
    $tasks = new Task;
    $tasks->t_title = $request->input('t_title');
    $tasks->project_id = $request->input('project_id');
    $tasks->save();
}

Ajax:

<script type="text/javascript">
$(document).ready(function () {
    $('#addform').on('submit', function(e) {
        e.preventDefault();

        $.ajax({
            type: "POST",
            url: "/addstudent",
            data: $('#addform').serialize(),
            success: function (response) {
                console.log(response)
                $('#studentaddmodal').modal('hide')
                alert("data saved");
            },
            error: function(error) {
                console.log(error)
                alert("Data not saved");
            }
        });
    });
});
</script>
</body>

路线:

Route::get('/tasks', 'projects\ProjectpController@index');
Route::post('/addstudent', 'projects\ProjectpController@store');

当我用 project_id 在字段中填写整数时,警报显示 "data saved",但它没有出现在数据库中。 如果我将文本放在 project_id 字段中,那么警报应该是 "data not saved"。 CSRF 令牌没有丢失。我正在使用常规 bootstrap 模态。

使用 parse_str

解析您从控制器中的 AJAX 发送的字符串

将 ajax 的数据定义更改为

data: {
    formData: $('#addform').serialize()
}

并在您的控制器方法中

public function store(Request $request)
{
    parse_str($request->formData, $output);
    $tasks = new Task;
    $tasks->t_title = $output['t_title'];
    $tasks->project_id = $output['project_id'];
    $tasks->save();
}

类似问题:How do I PHP-unserialize a jQuery-serialized form?

阅读: