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

时间:2016-04-29 15:51:28

标签: jquery ajax laravel workflow

我只是想知道如何在Laravel中使用Ajax提交表单

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

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

我正在寻找不引人注目的javasctipt解决方案

3 个答案:

答案 0 :(得分:1)

您正在寻找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中或直接在输入上方)

答案 1 :(得分:0)

这是一个使用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');
        }

这样的例子有什么问题?

答案 2 :(得分:0)

在同一个域名

我的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

在我的Contrller @ sendcontacto

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