به راوت هات باید نام بدی و از نامشون توی سیستم استفاده کنی اینجوری بعدا اگه خواستی لینک رو تغییر بدی نیاز ینست قالب رو دست بزنی
Route::get('/rout5',[AjaxController::class,'AjaxController'])->name('someroute');
البته اگه پارامتر های ارسالیت رو با javascript بدست میاری و نمیتونی تو راوت php بزاری بهتره با کوئری استرینگ یا post ارسال کنی و جزوی از راوت نزاریشون
جیکوئری سادست با
$(selector)
المنت ها رو انتخاب میکنی که سلکتورش مثل css هستش مثلا اگه المنتی با آیدی category_test رو بخای میشه
$('#category_test')
بعد که انتخابش کردی میگی حالا چیکارش کن مثلا اگه value رو بخای
$('#category_test').val();
90% جی کوئری همینه ارسال ایجکس هم با جی کوئری به این شکله
$.get( 'address' , { query_String_key : query_string_value}, function(result){
// result -> pasokh bargashti
});
یعنی کلش میشه
function loadDoc()
{
var category_id = $('#category_test').val();
$.get( '{{route('someroute')}}' , { category_id : category_id}, function(ajax_response){
var ajax_response = JSON.parse(ajax_response);
});
}
این خط ممکنه اررور بده
var ajax_response = JSON.parse(ajax_response);
چون جیکوئری اگه درست درخواستت رو برگشت بدی خودش دیکد میکنه جیسون رو و نیازی نیست دیگه به این خط چون داری چیزی که قبلا دیکد شده اتومات رو دوباره دیکد میکنی
در مورد آرایه هم جاواسکریپت 2 نوع آرایه داره که شکلشون فرق میکنه
آرایه با کلید که بهش آبجکت میگن و به این شکله
var data = { k : v , k : v }
آرایه بدون کلید که به این شکله
var data = [ v , v, v ];
برای خوندنشون باید بسته به اینکه کدوم مدل رو داری حلقه بزاری
var data = ['a' , 'b' , 'c'];
data.forEach((element) => {
console.log(element);
});
نوع با کلید
var data = { name : 'ali' , last_name : 'alavi'};
for (var [key, value] of Object.entries(data)) {
console.log(key, '->' , value);
}
که نوع با کلید رومعمولا توی حلقه نمیزارن چون کلید داره و مستقیم بهش دسترسی پیدا میکنن
var data = { name : 'ali' , last_name : 'alavi'};
console.log(data.name);
console.log(data.last_name);
باید دید کد php چجوری پاسخ رو برگشت میده مثلا اگه همچین چیزی داشته باشی توی کنترلرت برای گرفتن زیر دسته ها
function get_subcategories(Request $request ){
$categories = Category::where( 'parent_id' , $request->input('category_id) )->get();
return response()->json(['success' => 1 , 'categories' =>$categories]);
}
توی ajax_response این رو خواهی داشت
{
success : 1 ,
categories : [ { id : 1 , title : 'a' } , { id : 2 , title : 'b' } , { id : 3 , title : 'c' } ]
}
ترکیبی از آرایه با کلید و بدون کلید
باید اینجوری هندلش کنی
for (var [key, value] of Object.entries(ajax_reponse.categories)) {
console.log(value.id , value.title);
}
کلش میشه
function loadDoc()
{
var category_id = $('#category_test').val();
$.get( '{{route('someroute')}}' , { category_id : category_id}, function(ajax_response){
var ajax_response = JSON.parse(ajax_response);
if(ajax_response.success == 1 )
{
for (var [key, value] of Object.entries(ajax_reponse.categories)) {
console.log(value.id , value.title);
}
}
else
{
alert('something went wrong ! ');
}
});
}