Laravel 5.4 的 Ajax 请求

Posted

技术标签:

【中文标题】Laravel 5.4 的 Ajax 请求【英文标题】:Request of Ajax with Laravel 5.4 【发布时间】: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 标记。尝试将&lt;meta name="csrf-token" content=" csrf_token() "&gt; 添加到head 检查 Laravel 错误日志,那里会出现错误的详细描述,检查它所说的内容,服务器端脚本中可能存在错误。您的客户端脚本看起来不错。 【参考方案1】:

返回一个 json 响应。你需要使用。

response()->json([
 'somemessage' => 'message',
 'valor' => $valor
]);

更新:您收到错误警报,因为我认为您的路由方法与您的控制器方法不匹配。

Route::post('/teste/valor', 'TesteAjaxController@valor');

你的控制器在哪里

public function cep() ...

【讨论】:

以上是关于Laravel 5.4 的 Ajax 请求的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 $request->ajax() 和 Laravel 5.4 检查请求是不是为 ajax

Laravel 5.4,AJAX 应该不会出错

从 5.4 升级后的 Laravel 419 发布请求

使用 laravel 5.4 返回验证的 json

内部服务器错误 500 Laravel 5.4 AJAX

Laravel 5.4 + Ajax 等于 401 未经身份验证