URL-адрес AJAX работает на одном блейде, но не на другом

#jquery #ajax #laravel

Вопрос:

Я извлекаю данные из базы данных с помощью AJAX в laravel. Все работает нормально. Ниже приведен код моего AJAX:

 $('#salesmanlist_input').on('change', function() {
                var salesmanlist_input = $(this).val();
                $.ajax({
                    type: 'GET',
                    url: 'sales/lims_salesman_list',
                    data: {
                        data: salesmanlist_input
                    },
                    success: function(data) {
                        console.log("Data in on change salesman is: "   data);
                        
                    }
                });
            });
 

маршрут, который я использую для этого, выглядит следующим образом

 Route::get('sales/lims_salesman_list', 'SaleController@limsSalesmanList')->name('SalesmanList.view');
 

Проблема, с которой я сталкиваюсь, заключается в том, что он отлично работает на одном лезвии, но не работает на другом лезвии. В другом файле он выдает ошибку как

jquery.min.js:2 ПОЛУЧИТЬ http://localhost/alimran_final/sales/sales/lims_salesman_list?data=usama

Комментарии:

1. Что вы пытались сделать, чтобы решить эту проблему? Данная «ошибка» не выглядит для меня ошибкой, так есть ли какое-либо реальное сообщение об ошибке, с которым вы столкнулись?

2. я попытался изменить URL-адрес, например ../sales/lims_salesman_list ,, /sales/lims_salesman_list , /lims_salesman_list , но он также не работает. Да, я знаю, что код в порядке, но не знаю, почему он все еще не работает.

3. Я предлагаю вам повторить /sales/lims_salesman_list попытку с помощью ведущей косой черты.

Ответ №1:

URL url: 'sales/lims_salesman_list', -адрес статический. Как он будет добавлен к текущему URL-адресу. Вы должны добавить URL-адрес в колонку с помощью помощника route .

 $('#salesmanlist_input').on('change', function() {
                var salesmanlist_input = $(this).val();
                $.ajax({
                    type: 'GET',
                    url: "{{ route('SalesmanList.view') }}",
                    data: {
                        data: salesmanlist_input
                    },
                    success: function(data) {
                        console.log("Data in on change salesman is: "   data);
                        
                    }
                });
            });
 

Комментарии:

1. Пожалуйста, добавьте некоторые пояснения к вашему ответу, чтобы другие могли извлечь из него уроки. Что вы изменили и почему?

2. @NicoHaase Обновлено. И спасибо за предложения.

3. @SNSharma собирается проложить маршрут, но не получает данные, возвращается [object Object] вместо фактического результата.

4. Просто используйте console.log(data)

Ответ №2:

Проблема,с которой вы сталкиваетесь, заключается в том, что маршрут статичен, хотя, когда вы находитесь по адресу /URL продаж, он также добавит другие продажи, как это произошло с вами


 jquery.min.js:2 GET http://localhost/alimran_final/sales/sales/lims_salesman_list?data=usama
 

у вас есть 2 решения:

  1. измените URL-адрес в запросе ajax с url: «продажи/lims_salesman_list» на url: «/продажи/lims_salesman_list», косая черта добавлена в начало
  2. измените URL-адрес в ajax на URL:»{{ маршрут(‘SalesmanList.view’) }}»,

Однако я предпочитаю использовать решение 2, поэтому оно более динамично, когда вы меняете строки в файле веб-маршрутов, оно будет динамически изменяться

Также попробуйте очистить кэш маршрута