Laravel контроллер не отвечает обратно на AJAX запрос - PullRequest
0 голосов
/ 23 апреля 2020

Я набираю текст в текстовой области

 <input placeholder="DISCOUNT COUPON" type="text" id="coupon">

Отправка этого текста в контроллер с помощью ajax;

$.ajax({
    type: "POST",
    url: "applyCoupon",      
    data:{
    coupon: $('#coupon').val(),
    course_id: {{$course->id}},
    _token: {{ csrf_token() }},
    },
    success: function(dataResult){
    alert("success");} // why i am not GETTING this alert?

Контроллер:

public function applyCoupon(Request $request)
    {
        $result=new \stdClass();
        $coupons = Coupons::select('discount_percentage')->where('coupon_code',$request->get('coupon'))
                            ->where('course_id',$request->get('course_id'))
                            ->get();
        $course = Course::findOrFail($request->get('course_id'));
        $discounted_price=  ($course->price) - (($course->price)*($coupons[0]->discount_percentage)/100);

        $result->val = $discounted_price;
        $result->statusCode = 200;
        return json_encode($result);

    }

Веб. php:

Route::post('course/applyCoupon', ['uses' => 'CoursesController@applyCoupon', 'as' => 'courses.applyCoupon']);

все выглядит хорошо, но почему функция успеха не работает?

Ответы [ 4 ]

0 голосов
/ 23 апреля 2020

Вам необходимо дать ответ в ответ на ajax вызов: -

use Response;

return response()->json(['message' => 'error', 'data' => $data]);
0 голосов
/ 23 апреля 2020

Вы не используете полный URL, который вы установили в своем routes/web.php

Измените

url: "applyCoupon",  

на

 url: "course/applyCoupon",  

или даже лучше, если бы используйте предоставленное вами название маршрута

 url: "{{route('courses.applyCoupon')}}",
0 голосов
/ 23 апреля 2020

Укажите правильный маршрут для вашего ajax вызова

. Передайте это в ajax URL.

url: "{{ route('courses.applyCoupon' }}"

, если все еще не работает, затем проверьте вкладку сети в инструменте проверки enter image description here

Нажмите на звонок ajax, и он покажет вам детали на правой стороне. напишите здесь, что вы получаете там.

0 голосов
/ 23 апреля 2020

Вы должны использовать routes/api.php вместо routes/web.php в первую очередь.

Кроме того, зарегистрируйте ошибку, добавив

...
    error: function (request, error) {
        console.log(error);
        alert("Error");
    },

Это должно дать вам подсказку. Может быть что угодно в зависимости от ваших настроек.

...