Laravel 4使用jQuery Form Plugin将整个表单作为变量发送

时间:2014-03-24 15:08:04

标签: jquery mysql laravel-4 jquery-forms-plugin

如何使用jQuery Form Plugin发送我正在处理的表单的ajax版本作为变量然后发送到数据库?我想要提取几个输入(例如订单名称和日期)并将它们放在数据库或组织目的中,但我希望能够将整个订单表单存储在基础中,以便可以调用表单和如果需要,稍后编辑。 jQuery Form Plugin看起来很理想,但是它将表单发送到文件目的地,我需要将它发送到变量,然后我可以将它发送到数据库。如果有人对如何做到这一点有任何想法,将不胜感激!非常感谢你!

1 个答案:

答案 0 :(得分:1)

如果您只想将表单发送到Laravel,您只需要jQuery就可以执行此操作:

jQuery('#saveButton').click(function(evnt) {
    var href = $("#"+event.target.id).closest('form').attr('action');
    var form = $("#"+event.target.id).closest('form').attr('id');

    jQuery.post(href, jQuery("#"+form).serialize())
    .done(function(data) {
        if (data.success == "true") {
            /// do what you need to do in case of success
        } else {
            /// do what you need to do in case of error
        }
    })

    return false;
});

这是做什么的:

1)设置一个事件,点击标识为saveButton

的按钮

2)获取表单动作

3)获取表单id

4)将整个表格序列化为Json

5)将表单发布到操作URL

6)我的控制器应该返回一些data,具有success属性,我检查并做我在前端需要做的事情

在您的Laravel控制器中,您只需:

Input::get('email');
Input::get('password');

你甚至可以这样做:

Post::create(Input::all());

请注意,Input::all()会为您提供一系列字段,因此您可以删除不需要的内容。这只是一个例子来解释有很多方法可以在表中存储用户字段,这只是一个,非常简单:

$post = Post::find(Input::get('id'));

$post->title = Input::get('title');

$post->body = Input::get('body');

$input = Input::all();

unset($input['title']);

unset($input['body']);

$post->userFields = json_encode($input);

$post->save();

正如您在评论中指出的那样,您可以使用Input :: except()和循环来获取所需内容。

如果您需要将这些字段与Form::model()一起使用,则可以将它们填回模型:

$post = Post::find(1);

foreach(json_decode($post->userFields) as $key => $value)
{
    $post->attributes[$key] =  $value;
}

然后通过它:

Form::model($post...);