如何在 Laravel 中通过 Ajax 提交表单

How to submit forms via Ajax in Laravel

我只是想知道如何在 Laravel

中使用 Ajax 提交表单

Laravel 本身并未在其文档中提供有用的提示或工作流程

是否有一些有用的库理想地作为 jquery 的扩展?

我正在寻找不显眼的 javasctipt 解决方案

您正在寻找 https://github.com/whipsterCZ/laravel-ajax

它完全满足您的需求以及更多

通过 ajax 发送表单就像这样简单 - 无需配置

HTML

<form action="" class="ajax">...</form>

控制器

public function update(ClientRequest $request, Client $client)
{
    $client->update($request->all());
    $request->session()->flash('success', 'Client has been updated.');

    return \Ajax::redirect(route('clients.index'));
}

它还验证表单(通过自定义 FormRequest)并显示错误(在 errorBag 中或直接在输入上方)

这是一个使用 jquery

的例子
$(document).ready(function()
                      {
                       $(document).on('submit', '#reg-form', function()
                       {
                      var data = $(this).find("#post_id").val();
                        $.ajax({
                        type : 'POST',
                        url  : '{{url("/ajax")}}',
                       data: {'name':data, '_token': $('input[name=_token]').val()},
                       success: function(data) {
                       //do stuff
                      },

                            error :  function(data)
                            {
                                alert("Fix thist");
                            }
                        });
                        return false;
                       });

                      });

控制器

if (\Request::ajax()) {
    // Do stuff
            return response()->json('success');
        }

这样的例子有什么问题吗?

在同一个域中

我的form.blade.php

<form action=""  id="contact-form" class="form-contact">
    <input type="text" name="name" id="contact_name" placeholder="Name">
    <input type="email" name="email"id="contact_email"   placeholder="Email">
    <textarea name="message"  id="contact_message"  placeholder="Message"></textarea>
    <input type="submit" class="bnt-submit" value="Send">
</form>

我的function.js

$("#contact-form").submit(function(){
     formulario =  $("#contact-form");
          url =  "http:://MyDomin/sendContacto";
                    $.ajax({
                        method: "POST",
                        url: url,
                        data: formulario.serialize()
                    })
                        .done(function( response ) {
                            msg = ' <div class="alert alert-success" role="alert">'+arrMsgs[lang]["message_send"]+'</div>';
                            $("#messages").append(msg);
                        });
})

在routes.php中添加路由sendContact并分配一个函数sencContacto

在我的控制器@sendcontacto

public function sendContacto(Request $request)
{
    $name = $request->input("name");
    $email = $request->input("email");
    $message = $request->input("message");
//Do something
}