gpt4 book ai didi

javascript - 如何在 Laravel 5.1 中将变量值从 JavaScript 发送到 Controller

转载 作者:行者123 更新时间:2023-11-27 23:55:22 25 4
gpt4 key购买 nike

我有一个带有该字段的表单

<input type="hidden" name="user_id" id="user-id" value="">

我通过单击按钮(而不是表单提交)时的 javascript 设置字段值。我想将此值从 javascript 或 php 传递到 Controller 。我搜索了一下,发现ajax会用于此目的。这是我到目前为止尝试过的

$.ajax({
url: 'localhost:8000/test',
type: 'POST',
data: { id: 1 },
success: function()
{
alert("Settings has been updated successfully.");
}
});

我是 Javascript 初学者,对 ajax 不太了解。请引导我走向正确的方向。(上面的ajax不起作用)
更新
单击按钮时出现此错误

POST http://localhost:8000/test 500 (Internal Server Error)x.ajaxTransport.send @ jquery-1.10.2.min.js:6x.extend.ajax @ jquery-1.10.2.min.js:6openMessageBox @ js.js:28

这就是我调用ajax请求的方式,点击按钮openMessageBox

function openMessageBox(){
$.ajax({ //line 28
url: 'test',
type: 'POST',
data: { id: $('#user-id').val() },
success: function()
{
alert("Settings has been updated successfully.");
}
});
}

最佳答案

要让 ajax 调用为 Laravel 应用程序工作,您需要做两件事:

路线文件中的路线设置

将以下行添加到您的路由文件中,默认情况下这将位于 app/Http/routes.php 中:

Route::post('/test', 'Controller@method');
//Please change `Controller` to be the actual name of the controller and `method` to be the method name in that controller.

更多信息请参阅文档http://laravel.com/docs/5.1/routing

CSRF token (假设您没有删除 CSRF 中间件或为此路由禁用它)

添加CSRF token的最简单方法就是将它添加到您的ajax请求数据中,即

data: {_token: {{ csrf_token() }}, id: 1}

但我假设您将使用多个 ajax 请求,因此您最好在 <head> 内添加一个元标记。主布局模板中的标签

<meta name="csrf_token" value="{{ csrf_token() }}">

然后在你拉入的地方添加 jQuery :

<script>
$(function () {

$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf_token"]').attr('value')
}
});
});
</script>

这样您就不必将 token 包含在 ajax 数据中。

仅供引用,大多数现代浏览器都有一个检查器控制台(除其他外),它可以让您查看通过 ajax 请求(以及更多)从服务器返回的响应。例如,在 Chrome 中,只需右键单击页面,单击“检查元素”,然后单击“网络”选项卡。您需要在发送请求之前将其打开。这将允许您查看 Laravel 是否抛出任何错误。

希望这有帮助!

关于javascript - 如何在 Laravel 5.1 中将变量值从 JavaScript 发送到 Controller,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32306712/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com