【问题标题】:PUT or POST in Ajax requestAjax 请求中的 PUT 或 POST
【发布时间】:2017-08-10 04:29:32
【问题描述】:

我有一个关于我正在构建的表单的问题,基本上我有 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,而是如何在我的 ajax 中管理我何时应该使用 POST 或 PUT,因为用户可以第一次插入数据,在这种情况下它必须是 POST,但是现在想象一下如果记录已经存在,在这种情况下他只需要更新并在 ajax 中使用 PUT。

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

【问题讨论】:

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


【解决方案1】:

处理这种情况在post检查之前数据是否已经存在,如果然后显示err msg已经存在,否则添加,在put中测量差异b/w post,PUT取为url,但POST只取端点。

【讨论】:

    【解决方案2】:

    发送一个您已经在做的请求,现在使用updateOrCreate,如果没有针对经过身份验证的用户的记录,它将创建一条记录,如果有则它将更新。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-07
      • 2020-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-19
      • 1970-01-01
      相关资源
      最近更新 更多