رفتن به مطلب
انجمن پشتیبانی لاراول ایران
negar_a

ajax در لاراول

Recommended Posts

سلام دوستان . مشکل کد من چیه که جواب نمیده .

در یک صفحه اینو دارم :

 <input type="text" id="fname">
  <button type="button" id="regist" class="btn btn-warning">getrequest</button>

و این کد اجاکس رو نوشتم . میخوام بعنوان تست ، وقتی روی button کلیک میکنم ، مقداری که درون فیلد وارد کردم نشون بده .

<script type="text/javascript">
    $.ajaxSetup({
        headers: {
            'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
        }
    });
    $(document).ready(function() {

        $('#regist').click(function () {

            var fname = $('#fname').val();
            $.ajax({
                type:'POST',
                url:"{{ url('/regist') }}",
                data:{fname:fname},
                success:function(data){
                    alert(data.success);
                }
            });
        });

    });

</script>

و کدی که در web.php نوشتم اینه

Route::post('/regist', function () {
    if((new Illuminate\Http\Request)->ajax()){
        return Response::json((new Illuminate\Http\Request)->all());
    }
});

وقتی کلیک میکنم در alert  کلمه ی undefined رو نمایش میده 

Share this post


Link to post
Share on other sites

سلام

ابتدا مسیر (route) درخواست را بصورت زیر تغییر دهید.

Route::get('/regist', function (Illuminate\Http\Request $request) {
    if($request->ajax())
        return \Illuminate\Support\Facades\Response::json($request->all());
    return \Illuminate\Support\Facades\Response::json(false);
});

توضیح اینکه اولا از متد get استفاده کنید. ثانیا شی request$ را به عنوان آرگومان تابع (Closures) قرار دهید.

حال تابع ajax را بصورت زیر ویرایش کنید.

$.ajax( {
    type : 'get',
    url : "{{ url('/regist') }}",
    data : { fname : fname },
    success : function(data) {
        alert(data.fname);
   }
 });

از متد get استفاده کنید و در بدنه تابع success با استفاده از آرگومان data فقط به مقادیری دسترسی خواهید داشت که آنها را به سرور ارسال کردید.(کاملا مشخه که دسترسی به مقداری که وجود نداره undefined هست!)

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

موفق باشید.

Share this post


Link to post
Share on other sites

خیلی ممنونم . بله نتیجه داد . 

حالا من برای پروژه ام تغییراتی در این کد دادم . به این صورت که وقتی  تعداد محصولات انتخاب و تغییر داده میشه ابتدا اون مقدار رو بهمون نشون بده ( دارم مرحله به مرحله پیش میرم که یادگیریم بهتر بشه )

                                            <input type="number" step="1" max="5" min="1"  id="quantity" data-stepper-debounce="400" class="js-stepper form-control" value='1'>

کد اجاکس :

 $.ajaxSetup({
       headers: {
           'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
       }
   });
   $(document).ready(function() {

       $( "#quantity" ).change(function () {

           var quantity = $("#quantity").val();
           $.ajax( {
               type : 'post',
               url : "{{ url('/basket-post') }}",
               data : { quantity : quantity },
               success : function(data) {
                   alert(data.quantity);
               }
           });
       });

   });

و route

    Route::post('/basket-post' , 'OrderController@basketPost')->name('basket.post');

و کنترلر 

 public function basketPost(Request $request)
    {
           if($request->ajax()){
               return Response::json($request->all());
           }else{
               return Response::json(false);
        
            }

    }

تا اینجا درست کار میکه و وقتی روی quentity کلیک میکنم تعداد اون رو بهم میده . 

اما تعداد سطرها بیش از یکی هست و این سطر ممکنه تکرار بشه . بخاطر همین فقط نتیجه ی سطر اول رو برمیگردونه و بقیه بی نتیجه هست

بخاطر همین ایدی اون سطر رو هم به اسمش اضافه کردم اما نمیدونم چطور  در اجاکس دریافت کنم هر سطر با ایدی منحصرش .

                                            <input type="number" step="1" max="5" min="1"  id="quantity{{$details['id']}}" data-stepper-debounce="400" class="js-stepper form-control" value='1'>

و مسله ی دوم اینکه  میخوام مقدار هر کدوم رو در کنترلر در متغیر بریزم تا ازش استفاده کنم . به این شکل نوشتم undefined برمیگردونه 

          return Response::json(['quantity'])->getData();

ممنون از پاسخ گویی تون 

Share this post


Link to post
Share on other sites

وارد این گفتگو شوید

میتوانید پیام خود را ارسال کنید و بعد ثبت نام نمایید. در صورتی که حساب کاربری دارید, هم اکنون وارد شوید و در این گفتگو شرکت کنید.

مهمان
پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  Only 75 emoji are allowed.

×   لینک شما به صورت اتوماتیک جایگذاری شد.   نمایش به عنوان یک لینک به جای

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • جدید...