我有一个带有字段的表单
<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.");
}
});
}
答案 0 :(得分:1)
要获得适用于Laravel应用程序的ajax调用,您需要做两件事:
在路线文件中设置路线
将以下行添加到路线文件中,默认情况下会在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令牌
(假设您没有删除CSRF
中间件或为此路由禁用它)
添加CSRF token
的最简单方法是将其添加到ajax请求数据中,即
data: {_token: {{ csrf_token() }}, id: 1}
但我假设您将使用多个ajax请求,那么您最好做的是在主布局模板的<head>
标记内添加元标记(s)
<meta name="csrf_token" value="{{ csrf_token() }}">
然后在你进入jQuery
的地方添加某个地方:
<script>
$(function () {
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf_token"]').attr('value')
}
});
});
</script>
这样您就不必在您的ajax数据中包含令牌。
仅供参考,大多数现代浏览器都有一个检查器控制台,除了其他功能之外,它还允许您通过ajax请求(以及更多)查看您从服务器返回的响应。例如,在Chrome中,只需右键单击页面,单击“检查元素”,然后单击“网络”选项卡。您需要在发送请求之前将其打开。这将允许您查看Laravel是否抛出任何错误。
希望这有帮助!