2017-09-30 28 views
1

我試圖更新使用Laravel AJAX POST方法我的形式默認的對象,同時提交我得到錯誤的形式:Laravel使用Ajax創建從空值

Creating default object from empty value

我曾嘗試這個代碼來完成我的目標。

這裏是我的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控制器所做實現我的目標。

這是我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'; 
} 

回答

1

問題就出在這裏$design=design::find($id);

我認爲$design有話$design=design::find($id); null被返回null這裏?

如果是的話,你需要把支票

$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') 
]); 

希望這會爲您簡單的更新查詢方法修復你的問題:)

+0

當我分析網絡設計沒有像下面的正確傳遞 內容配置:表格數據; name =「design_no」6 –

+0

是的,它沒有進入時刪除它和重新編碼(在找到任何spl字符)它的輸入和拋出錯誤是這樣的:完整性約束違規:1062關鍵'designs_design_no_unique' –

+0

重複條目'5'這個錯誤,因爲你已經在你的表中有一個記錄,其中design_design_no_unique = 5我假設 –