【问题标题】:Request of Ajax with Laravel 5.4Laravel 5.4 的 Ajax 请求
【发布时间】: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 错误日志,那里会出现错误的详细描述,检查它所说的内容,服务器端脚本中可能存在错误。您的客户端脚本看起来不错。

标签: ajax laravel routes


【解决方案1】:

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

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

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

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

你的控制器在哪里

public function cep() ...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-12
    • 1970-01-01
    • 2018-10-18
    • 2017-08-18
    • 2019-01-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多