【发布时间】:2018-06-12 03:29:47
【问题描述】:
我正在尝试使用 Laravel 5.4 制作 Ajax 请求的示例。
测试示例很简单,只需在我的 View 的 input = text 字段中输入一个数值,然后将该字段发送给 Controller,然后将该值加上 + 10,然后将该值返回给我的 View,这样它可以显示在警报上。
HTML:查看teste.blade.php
<!DOCTYPE html>
<head>
<title></title>
</head>
<body>
<form action="">
Valor: <input type="text" id="valor" name="valor" />
</form>
</body>
</html>
JS:js文件在viewteste.blade.php里面,我只是拆分了一下,方便解释。
<script>
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$(document).ready(function(){
$("#valor").on('blur', function()
{
valor = $(this).val();
$.ajax({
type:'POST',
url:"{{ URL::to('/teste/valor') }}",
dataType: 'JSON',
data: {
"valor": valor
},
success:function(data){
alert('Success');
},
error:function(){
alert('Error');
},
});
});
});
</script>
路线
Route::get('/teste', 'TesteAjaxController@index');
Route::post('/teste/valor', 'TesteAjaxController@valor');
控制器
class TesteAjaxController extends Controller
{
public function index()
{
return view('painel.viewteste');
}
public function valor(Request $request)
{
$valor= $request->input('valor');
$valor += 10;
return $valor; // How do I return in json? in case of an error message?
}
}
当我尝试通过 ajax 发送请求时,它总是会发出警报(“错误”)。是不是我在发送 ajax 或路由时做错了什么?
【问题讨论】:
-
错误:function(e){ console.log(e); },在这里您可以找到您面临的错误类型
-
您的控制器中没有
valor方法,您通过'TesteAjaxController@valor'访问该方法 -
请在您的控制器中添加 valor() 函数。
-
您的示例中没有
meta标记。尝试将<meta name="csrf-token" content="{{ csrf_token() }}">添加到head。 -
检查 Laravel 错误日志,那里会出现错误的详细描述,检查它所说的内容,服务器端脚本中可能存在错误。您的客户端脚本看起来不错。