- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个带有该字段的表单
<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/
我是一名优秀的程序员,十分优秀!