umutcankarce Adım adım gidin.
- Rotanın doğru olduğundan emin olun. artisan route:list ile rotayı listede kontrol edin. Mesela normalde update rotası PUT/PATCH olur, henüz bu eylemler desteklenmediği için post isteği yapılırken JS tarafında
_method:"PATCH"
gönderilir. Sizin kodda rota bilgisi olmadığı için POST mu PATCH mi emin olamıyorum.
- JS kısmında almaya çalıştığınız değişkenleri loglayın, gerçekten geldiklerinden emin olun. Örneğin rotaya eklediğiniz dataId boş gelirse farklı bir rotaya istek atmaya çalışabilir çünkü query string değil segment. /category/update/5 ile /category/update/ farklı rotalar. Sizin JS kodunuzda mesela /category/update/5 şeklinde bir rota varmış gibi davranmışsınız ama PHP kısmında
function update(Request $request)
yapmışsınız ve id değerini query string gibi almaya çalışmışsınız. Halbuki function update(Request $request, $id)
olması gerekiyordu.
- Sadece
response()->json(['message' => 'Hello World']);
şeklinde dönüş yapan bir rota yazıp buna jQuery ajax ile istek atmaya çalışarak sonuç almaya çalışın, bunu sonra gerçek rotalarınızda uygulamaya çalışın.
- API sonuçları verirken 2xx kodu ile hata dönmeyin, dönen veriye success gibi şeyler eklemeyin.
response()->json(['message' => 'İşlem başarısız oldu'], 400);
şeklinde hata kodu ile dönüş yapın. Böyle yaparsanız mesela jQuery.ajax içindeki success yöntemi sadece işlem başarılı olduğunda çalışır, içeride kontrol etmenize gerek kalmaz, ayrıca jQuery.ajax içindeki error yöntemi de çalışmış olur (şu an daima http 2xx döndüğünüz için çalışmıyor)
$request->id
şeklinde kullanmayın, daima $request->input('id')
şeklinde kullanın: https://laravel.gen.tr/d/7044-request-kullanim-sekli
Category::find($request->id)->update()
şeklinde kullanım yanlış. Kısa yazmak istiyorsanız en azından Category::findOrFail($request->input('id'))->update()
yapın. find()->update() yaptığınızda Category bulamazsa fatal error alırsınız.
- if($update) şekinde, yapılan update işlemini kontrol etmenize gerek yok çünkü update işlemi daima true döner. false döneceği durum yoktur çünkü güncelleyemezse exception fırlatır. Eğer exception dönme durumu varsa (mesela duplicate kayıt hatası) try...catch içinde yapabilirsiniz.
Ne yazık ki sadece forumdan yardımcı olabiliyorum, bağlantı vs ile yardımcı olamıyorum, kusura bakmayın.