【问题标题】:Laravel using Ajax Creating default object from empty valueLaravel 使用 Ajax 从空值创建默认对象
【发布时间】:2018-03-11 23:21:26
【问题描述】:

我正在尝试使用 Laravel 中的 AJAX POST 方法更新我的表单,同时提交表单时出现错误:

从空值创建默认对象

我已经尝试过这段代码来实现我的目标。

这是我的 Ajax 调用

        $('.submit').click(function(){
                $.ajaxSetup({
                    headers: {
                            'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
                        }
                });
            var form = $('form')[0];
            var update = new FormData(form);
            var id =$('.designNo').val();
         $.ajax({
            type:"POST",
              url:"/design_update/"+id,
                processData: false,  // Important!
                contentType: false,
                cache: false,
              data:update,
              success:function(results){
                if (results==1) {
                    $("#result").html("Upadated Successfully");
                    $('#result')[0].scrollIntoView(true);
                    $("#result").addClass("alert alert-success"); 
                      window.setTimeout(function(){
                      window.location.href = "/design";
                      }, 2000);
                  }else{
                    $('#error').html(results);
                    $('#error')[0].scrollIntoView(true);
                    $('#error').addClass("alert alert-danger");
                    }
                }
            }); 
        }); 

这就是我在 Laravel Controller 中为实现我的目标所做的。

这是我的 Laravel 控制器页面:

public function update(Request $request, $id)
{
    // To Update
    // $validator = Validator::make($request->all(), [
    $this->validate($request,[
        'design_no'=>'required',
        'design_image'=>'image|nullable|max:1999'
    ]);
            // Handle file Upload
     if ($request->hasFile('design_image')) {
        // Get filename with image 
            $filenameWithex=$request->file('design_image');
        // Get just file name
             $filename=$_FILES['design_image']['name'];
            // $filename=pathinfo($filenameWithex,PATHINFO_FILENAME);
        // Get just ex 
            // $extension=pathinfo($filenameWithex,PATHINFO_EXTENSION);
        // File Name To Store
            $fileNameToStore=$filename;
        // Upload Image
            $path=$request->file('design_image')->storeAs('public/images',$fileNameToStore);
    }else{
        $fileNameToStore='noimage.jpg';
    }
    $design=design::find($id);
    $design->design_no=$request->input('design_no');
    $design->desg_1=$request->input('desg_1');
    $design->design_image=$fileNameToStore;
    $design->desg_2=$request->input('desg_2');
    $design->desg_3=$request->input('desg_3');
    $design->desg_4=$request->input('desg_4');
    $design->desg_5=$request->input('desg_5');
    $design->desg_6=$request->input('desg_6');    
    $design->save();
    return '1';
}  

【问题讨论】:

    标签: php jquery ajax laravel-5


    【解决方案1】:

    问题出在$design=design::find($id);

    我认为$design 有空字$design=design::find($id); 在这里返回空?

    如果是这样,您需要检查

    $design=design::find($id);
        if($design){
                $design->desg_1=$request->input('desg_1');
                $design->design_image=$fileNameToStore;
                $design->desg_2=$request->input('desg_2');
                $design->desg_3=$request->input('desg_3');
                $design->desg_4=$request->input('desg_4');
                $design->desg_5=$request->input('desg_5');
                $design->desg_6=$request->input('desg_6'); 
        }
    

    如果您想更新您的记录,那么我会建议您使用这种简单的更新查询方法

    design::where('design_no',$id)->update([
               'desg_1' => $request->input('desg_1'),
                'design_image'=> $fileNameToStore,
                'desg_2' => $request->input('desg_2'),
                'desg_3' => $request->input('desg_3'),
                'desg_4' => $request->input('desg_4'),
                'desg_5' => $request->input('desg_5'),
                'desg_6' => $request->input('desg_6') 
    ]);
    

    希望这能解决您的问题 :)

    【讨论】:

    • 当我分析网络设计时没有正确传递如下 Content-Disposition: form-data; name="design_no" 6
    • 是的,删除后它没有进入并重新编码(在找到任何 spl char 中)它的进入和抛出错误如下:完整性约束违规:1062 键“designs_design_no_unique”的重复条目“5”
    • 您收到此错误是因为您的表中已经有一条我假设 design_design_no_unique =5 的记录
    • 检查我更新的答案使用更新查询更新记录:)
    • 非常感谢@Mr.Pyramid
    猜你喜欢
    • 2020-06-19
    • 2017-11-29
    • 2018-07-18
    • 2019-03-14
    • 1970-01-01
    • 2021-05-22
    • 2016-03-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多