在Ajax请求中进行PUT或POST

时间:2017-03-18 17:17:13

标签: jquery ajax laravel laravel-5 laravel-5.3

我有一个关于我正在构建的表单的问题,基本上我有2个表,其中一个表我们"用户"存储电子邮件,密码,帐户类型等的位置。比我有另一张名为" personal_data"在哪里存储有关用户的更多信息,如地址,国籍和其他信息。

个人数据仅在用户注册时进行管理,而不是在注册后进入他填写个人信息的页面。在表格" personal_data"我有一个名为" user_id"在哪里建立表之间的关系。

我现在的问题是关于用户何时使用ajax填写表单中的信息。

代码示例:

$.ajax({
                headers: {
                    'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
                },

                method: 'PUT',//??? PUT OR POST
                url: '{{url('user/savedata')}}/{{$user->id}}',
                data: {
                    ...

                }


            }).done(function(response){
                console.log(response);

            }).fail(function(response) {

                var errors = response.responseJSON;
                $.each( errors, function(i, n){

                    //Show error message

                });
            });

我的问题不是我何时应该使用PUT或POST但是当我应该使用POST或PUT时如何管理我的ajax,因为用户可以第一次插入数据,在这种情况下它必须是POST,但现在想象一下如果记录已经存在,在这种情况下他只需要更新并在ajax中使用PUT。

那我怎么能处理这种情况呢?当用户已经在表中有记录时如何?在这种情况下,最佳做法是什么?

2 个答案:

答案 0 :(得分:0)

处理这种情况在帖子检查之前数据已经存在然后显示err msg已经存在其他添加,测量差异b / w post in put,PUT采取为url,但POST只采取端点。

答案 1 :(得分:0)

发送您正在进行的请求,现在使用updateOrCreate,如果没有针对经过身份验证的用户,则会创建一条记录,如果有,则会更新。

    $newUser = \App\UserInfo::updateOrCreate([
        'user_id'   => Auth::user()->id
    ],[
        'about'     => $request->get('about'),
        'sec_email' => $request->get('sec_email'),
        'gender'    => $request->get("gender"),
    ]);