سوال بپرسید
0

تبدیل آرایه php به آرایه javascript در لاراول

سوال بپرسید

باسلام 

دوستان کسی میدونه چجور باید (آرایه)مدل هایی رو که با controller به view میفرستیم رو به آرایه جاوا اسکریپت تبدیل کنیم و بعد روی اونها کار کنیم ؟؟؟

من میخوام جدول استان ها و جدول شهرهای ایران رو با controller به view بفرستم و بعد توی view با javascript روی اونها پردازش کنم و به ازای id هر استان شهر های اون رو نمایش بدم در تگ select و نمیخوام از ajax هم استفاده کنم . این کار رو با تگ های blade به راحتی میتونم انجام بدم ولی تنها مشکلی که هست باید بعد از انتخاب استان صفحه رفرش بشه و این کار استاندارد نیست . 

نمیدونم  این کار رو json میتونه انجام بده یا نه ؟؟؟

ممنون میشم اگر راهنمایی کنید !

برچسب ها:
گزارش سوال
پرسیده شده در
آمار بازدید: 103

1 پاسخ

0

سلام

راه اصولی و منطقی این است که شما از ajax استفاده کنید.(کلا ajax برای همین اهداف بوجود آمده است)  چه دلیلی برای استفاده نکردن از ajax دارید؟؟ (حتما دلیل منطقی برای این کار دارید!!!) برای هر کاری (حداقل) یک راه حلی وجود دارد و شما ملزم به استفاده از آن هستید.

هدف اصلی از تکنیک ajax دریافت داده از server و قرار دادن آنها در صفحه (در صورت لزوم) بدون تازه سازی (refresh) شدن کل صفحه است.

اگر بخواهید از ajax استفاده کنید می توانید بصورت زیر عمل کنید.

ابتدا مدلی به نام AjaxController ایجاد کرده و تابع ()loads را بصورت زیر در آن تعریف کنید.

class AjaxController extends Controller
{
    public function loads(Request $request)
    {
        if ($request->ajax()) {
            $data = [];  // get data from database

            return Response::json($data);
        } else
            return Response::json(false);
    }
}

حال در قسمت جاوا اسکریپت از کد های زیر استفاده نمایید. (فرض بر آن است که با کلیک بر روی دکمه با شناسه btn داده ها از سرور دریافت می شوند)

$(document).on('click', '#btn', function (evt) {
    let timeout = 5000;
    let url = '';
    let data = {}

    $.ajax({
        headers: {'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')},
        url: url,
        data: data,
        timeout: timeout,
        type: 'get',
        method: 'get',
        contentType: "application/json",
        cache: false,
        success: function (response, status, jqXhr) {
               // do any things here
        },
        error: function (jqXhr, status, errorMsg) {
               alert('error: ' + errorMsg)
        },
        complete: function (jqXhr, status) {
                           
        }
        
    });

})

در تابع ()success باید روی داده response پردازش های لازم را انجام دهید.

امیدوارم که این پاسخ مشکل شما را برطرف کرده باشد.