Помогите сформировать ссылку для Ajax

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Аватара пользователя
Kazzi
Сообщения: 63
Зарегистрирован: 2020.05.05, 19:23

Помогите сформировать ссылку для Ajax

Сообщение Kazzi »

Всем добра!
Вновь у меня проблема с ajax. Вот код:

Код: Выделить всё

$('.to-cart').on('click', function(e){
        e.preventDefault();
        var id = $(this).data('id');
        var qty = $('#qty').val();
        //var sise = $('#sise').val();
        $.ajax({
            url: 'index.php?r=cart/add',
            data: {id: id, qty: qty},
            type: 'GET',
            success: function(res){
                if(res === '') alert('Ошибка!');
                showCart(res);
            },
            error: function(){
                alert('Error');
            }
        });
    });
На локалке все работает, однако, при переносе на хост при попытке добавить товар, возвращается ошибка( Более чем уверен, что проблема в url. Все перепробовал. На данный момент отключил urlManager, как вы можете видеть. Однако всегда возвращается в окошке alert "Error". Помогите пожалуйста правильно сформировать путь. Брать url из ссылки не выйдет. Как вы понимаете, не всегда элемент отправки является ссылкой. Иногда это кнопка.
unknownby
Сообщения: 749
Зарегистрирован: 2019.11.05, 16:34
Контактная информация:

Re: Помогите сформировать ссылку для Ajax

Сообщение unknownby »

При нажатии на ссылку или кнопку. У тебя должен срабатывать ajax.
URL можно прописать и жостка, но зачем так категорично сразу убирать urlManager?
Пропиши просто cart/add
Аватара пользователя
Kazzi
Сообщения: 63
Зарегистрирован: 2020.05.05, 19:23

Re: Помогите сформировать ссылку для Ajax

Сообщение Kazzi »

unknownby писал(а): 2020.07.06, 07:39 При нажатии на ссылку или кнопку. У тебя должен срабатывать ajax.
URL можно прописать и жостка, но зачем так категорично сразу убирать urlManager?
Пропиши просто cart/add
Ajax срабатывает. Просто запрос не отправляется. И открывается алерт с Error. По условию. Вот именно потому-то я и спрашиваю. Я не могу понять, как еще точнее написать путь. Я и так уже аж с индексом его указал (на локалке работает только так). ЮрлМенеждер я отключил, потому, как на локалке и с ним и без него работает, а на хосте все наоборот. Не работает ни с ним, не без него. Cart/add я прописал туда, понятное дело.
unknownby
Сообщения: 749
Зарегистрирован: 2019.11.05, 16:34
Контактная информация:

Re: Помогите сформировать ссылку для Ajax

Сообщение unknownby »

Ajax мог сработать правильно и вернул (пустоту ) то, что вернул сам экшен. Может не сработал твой cart/add ? Попробовать стоит еще /cart/add при этом вернув urlManager, он никоим образом не мешает.
zxczxc12
Сообщения: 161
Зарегистрирован: 2013.01.24, 21:16

Re: Помогите сформировать ссылку для Ajax

Сообщение zxczxc12 »

Какая то проблема на ровном месте :-)

включаем в UrlManager

Код: Выделить всё

'enablePrettyUrl' => true,
    'showScriptName' => false,
и в коде

Код: Выделить всё

$.ajax({
            url: '/cart/add',
            data: {id: id, qty: qty},
            type: 'GET',
контроллер:
CartController

Код: Выделить всё

public function actionAdd(int $id,int $qty)
{
	print "test";exit;
}
а что бы понять какие есть роуты в данный момент и сходятся ли они , то в дебаг-панели вот тут все видно

https://prnt.sc/tcilp3

ну и смотреть что отдает контроллер

https://prnt.sc/tcinfz
Аватара пользователя
Kazzi
Сообщения: 63
Зарегистрирован: 2020.05.05, 19:23

Re: Помогите сформировать ссылку для Ajax

Сообщение Kazzi »

zxczxc12 писал(а): 2020.07.06, 08:51 Какая то проблема на ровном месте :-)

включаем в UrlManager

Код: Выделить всё

'enablePrettyUrl' => true,
    'showScriptName' => false,
и в коде

Код: Выделить всё

$.ajax({
            url: '/cart/add',
            data: {id: id, qty: qty},
            type: 'GET',
контроллер:
CartController

Код: Выделить всё

public function actionAdd(int $id,int $qty)
{
	print "test";exit;
}
а что бы понять какие есть роуты в данный момент и сходятся ли они , то в дебаг-панели вот тут все видно

https://prnt.sc/tcilp3

ну и смотреть что отдает контроллер

https://prnt.sc/tcinfz
У меня блок урлМенеджер закомментирован был. Однако там прописано все, что вы предлагаете. Вот в дебаг-панели как раз огромная проблема( Ее тупо нет( На локальном серваке спокойно отображается, однако после переноса на хост, пропадает. И понять не могу почему( А так, с менеджером или нет, на локалке работает все как часы, а на хосте не работает. Я грешу лишь на пути, но... Проверить ни как не могу(
Аватара пользователя
Dominus
Сообщения: 892
Зарегистрирован: 2013.03.14, 21:27
Откуда: Россия, Иваново
Контактная информация:

Re: Помогите сформировать ссылку для Ajax

Сообщение Dominus »

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

Код: Выделить всё

<?php
$url = Url::to(['cart/add', 'id' => $model->id]);
yii\helpers\VarDumper::dump($url, 10, 1);
die; // остановка выполнения
 ?>
Не спорь с дураком, иначе окружающие не правильно поймут кто из вас дурак!
zemlia-zemlia
Сообщения: 35
Зарегистрирован: 2019.12.05, 20:03

Re: Помогите сформировать ссылку для Ajax

Сообщение zemlia-zemlia »

Kazzi писал(а): 2020.07.06, 18:17
zxczxc12 писал(а): 2020.07.06, 08:51 Какая то проблема на ровном месте :-)

включаем в UrlManager

Код: Выделить всё

'enablePrettyUrl' => true,
    'showScriptName' => false,
и в коде

Код: Выделить всё

$.ajax({
            url: '/cart/add',
            data: {id: id, qty: qty},
            type: 'GET',
контроллер:
CartController

Код: Выделить всё

public function actionAdd(int $id,int $qty)
{
	print "test";exit;
}
а что бы понять какие есть роуты в данный момент и сходятся ли они , то в дебаг-панели вот тут все видно

https://prnt.sc/tcilp3

ну и смотреть что отдает контроллер

https://prnt.sc/tcinfz
У меня блок урлМенеджер закомментирован был. Однако там прописано все, что вы предлагаете. Вот в дебаг-панели как раз огромная проблема( Ее тупо нет( На локальном серваке спокойно отображается, однако после переноса на хост, пропадает. И понять не могу почему( А так, с менеджером или нет, на локалке работает все как часы, а на хосте не работает. Я грешу лишь на пути, но... Проверить ни как не могу(
Что бы он (дебагер) работал на хостинге, пропишите свой айпи или * (это значит для любого) в конфигурационный файл ( cobfig/web.php) в настройках дебагера в поле а allowedIps, оно у вас закоментировано, скорее всего
zemlia-zemlia
Сообщения: 35
Зарегистрирован: 2019.12.05, 20:03

Re: Помогите сформировать ссылку для Ajax

Сообщение zemlia-zemlia »

Kazzi писал(а): 2020.07.06, 18:17
zxczxc12 писал(а): 2020.07.06, 08:51 Какая то проблема на ровном месте :-)

включаем в UrlManager

Код: Выделить всё

'enablePrettyUrl' => true,
    'showScriptName' => false,
и в коде

Код: Выделить всё

$.ajax({
            url: '/cart/add',
            data: {id: id, qty: qty},
            type: 'GET',
контроллер:
CartController

Код: Выделить всё

public function actionAdd(int $id,int $qty)
{
	print "test";exit;
}
а что бы понять какие есть роуты в данный момент и сходятся ли они , то в дебаг-панели вот тут все видно

https://prnt.sc/tcilp3

ну и смотреть что отдает контроллер

https://prnt.sc/tcinfz
У меня блок урлМенеджер закомментирован был. Однако там прописано все, что вы предлагаете. Вот в дебаг-панели как раз огромная проблема( Ее тупо нет( На локальном серваке спокойно отображается, однако после переноса на хост, пропадает. И понять не могу почему( А так, с менеджером или нет, на локалке работает все как часы, а на хосте не работает. Я грешу лишь на пути, но... Проверить ни как не могу(
Что бы он (дебагер) работал на хостинге, пропишите свой айпи или * (это значит для любого) в конфигурационный файл ( cobfig/web.php) в настройках дебагера в поле а allowedIps, оно у вас закоментировано, скорее всего
Аватара пользователя
Kazzi
Сообщения: 63
Зарегистрирован: 2020.05.05, 19:23

Re: Помогите сформировать ссылку для Ajax

Сообщение Kazzi »

zemlia-zemlia писал(а): 2020.07.07, 02:49 Что бы он (дебагер) работал на хостинге, пропишите свой айпи или * (это значит для любого) в конфигурационный файл ( cobfig/web.php) в настройках дебагера в поле а allowedIps, оно у вас закоментировано, скорее всего
Спасибо!)
Аватара пользователя
Kazzi
Сообщения: 63
Зарегистрирован: 2020.05.05, 19:23

Re: Помогите сформировать ссылку для Ajax

Сообщение Kazzi »

Dominus писал(а): 2020.07.06, 21:02 Всегда используйте UrlManager, тогда проблем не будет.
Проверить какой адрес формируется, можно простым не хитрым способом:
вьюшка

Код: Выделить всё

<?php
$url = Url::to(['cart/add', 'id' => $model->id]);
yii\helpers\VarDumper::dump($url, 10, 1);
die; // остановка выполнения
 ?>
Проверил. Формируется /tocart и id товара. Все, как и должно быть согласно urlManager. Переписал в ajax путь на /tocart, на локалке все работает, но хосте нет(
Аватара пользователя
Kazzi
Сообщения: 63
Зарегистрирован: 2020.05.05, 19:23

Re: Помогите сформировать ссылку для Ajax

Сообщение Kazzi »

Путь формируется правильно, но запрос возвращает ошибку 500(
Аватара пользователя
Kazzi
Сообщения: 63
Зарегистрирован: 2020.05.05, 19:23

Re: Помогите сформировать ссылку для Ajax

Сообщение Kazzi »

Такое было и на локалке. Я решил этот косяк взяв урл из href ссылки. Все заработало. Потом начал использовать либо урлМанагер, либо вот такие пути, как я скидывал изначально. только тогда работало. И сейчас на локалке работаетв се нормально, но после переноса при попытке добавить товар в корзину просто открывается алерт с Error внутри. НУ как и написано в скрипте, если произошла ошибка.
unknownby
Сообщения: 749
Зарегистрирован: 2019.11.05, 16:34
Контактная информация:

Re: Помогите сформировать ссылку для Ajax

Сообщение unknownby »

Kazzi писал(а): 2020.07.07, 08:14 Такое было и на локалке. Я решил этот косяк взяв урл из href ссылки. Все заработало. Потом начал использовать либо урлМанагер, либо вот такие пути, как я скидывал изначально. только тогда работало. И сейчас на локалке работаетв се нормально, но после переноса при попытке добавить товар в корзину просто открывается алерт с Error внутри. НУ как и написано в скрипте, если произошла ошибка.
А можно включить дебагер на проде и дать ссылку, посмотреть что там пишет хоть? Можно в личку, если сюда боимся :)

Просто не кажется странным, что на локалке работает, а на проде нет? :D
zxczxc12
Сообщения: 161
Зарегистрирован: 2013.01.24, 21:16

Re: Помогите сформировать ссылку для Ajax

Сообщение zxczxc12 »

Kazzi писал(а): 2020.07.07, 08:08 Путь формируется правильно, но запрос возвращает ошибку 500(
А вот это совсем другой случай !!!
Очень может быть что путь таки нашелся ( не 404-я ) но сам контроллер содержит ошибку
Тут надо смотреть что отдает контроллер при вызове ajax запроса ( инструмент разработчика в браузере )
Аватара пользователя
Kazzi
Сообщения: 63
Зарегистрирован: 2020.05.05, 19:23

Re: Помогите сформировать ссылку для Ajax

Сообщение Kazzi »

unknownby писал(а): 2020.07.07, 08:45 А можно включить дебагер на проде и дать ссылку, посмотреть что там пишет хоть? Можно в личку, если сюда боимся :)

Просто не кажется странным, что на локалке работает, а на проде нет? :D
Нет, ссыль на прод с дебагером кидать не буду. Поверь, не просто кажется, я уверен, что это странно. :shock: Но объяснить это не могу. Ведь все прописано правильно, и все работает на локалке. Могу кинуть скрин. Вот:

https://ibb.co/hc5zSPb

https://ibb.co/PC3zNKH

Пишет, что вьюхи нет. А она есть...
Аватара пользователя
Kazzi
Сообщения: 63
Зарегистрирован: 2020.05.05, 19:23

Re: Помогите сформировать ссылку для Ajax

Сообщение Kazzi »

zxczxc12 писал(а): 2020.07.07, 09:24 А вот это совсем другой случай !!!
Очень может быть что путь таки нашелся ( не 404-я ) но сам контроллер содержит ошибку
Тут надо смотреть что отдает контроллер при вызове ajax запроса ( инструмент разработчика в браузере )
Вот код акшона:

Код: Выделить всё

public function actionAdd() 
    {
        $id = Yii::$app->request->get('id');
        $qty = (int)Yii::$app->request->get('qty');
        $qty = !$qty ? 1 : $qty;
        //$sise = Yii::$app->request->get('sise');
        $product = Products::findOne($id);
        if(empty($product)) return false;
        $session = Yii::$app->session;
        $session->open();
        $cart = new Cart();
        $cart->AddToCart($product, $qty);
        if (!Yii::$app->request->isAjax) {
            return $this->redirect(Yii::$app->request->referrer);
        }
        $this->layout = false;
        return $this->render('cart-modal', ['session' => $session]);
    }
unknownby
Сообщения: 749
Зарегистрирован: 2019.11.05, 16:34
Контактная информация:

Re: Помогите сформировать ссылку для Ajax

Сообщение unknownby »

Ну так у тебя ошибку пишет, в ней смотреть надо. Если пишет, что нет вьюхи, то её нет. Вариант что где-то с большой буквы Cart осталось?

Сделай скрины дерева проекта на локалке и на проде, развернув нужные папки.
Аватара пользователя
Kazzi
Сообщения: 63
Зарегистрирован: 2020.05.05, 19:23

Re: Помогите сформировать ссылку для Ajax

Сообщение Kazzi »

unknownby писал(а): 2020.07.08, 07:39 Ну так у тебя ошибку пишет, в ней смотреть надо. Если пишет, что нет вьюхи, то её нет. Вариант что где-то с большой буквы Cart осталось?

Сделай скрины дерева проекта на локалке и на проде, развернув нужные папки.
https://ibb.co/TLPJSvj
https://ibb.co/wYBL5sz

Есть она. И я уже на сто раз все перепроверил. На локалке все один в один.
unknownby
Сообщения: 749
Зарегистрирован: 2019.11.05, 16:34
Контактная информация:

Re: Помогите сформировать ссылку для Ajax

Сообщение unknownby »

Kazzi писал(а): 2020.07.08, 09:04 Есть она. И я уже на сто раз все перепроверил. На локалке все один в один.
Стоит все перепроверить, а лучше перезалить еще разок с локалки на прод файлы. На всякий случай еще разок имя файлу прописать, мало ли русская буква "С" в имени файла затисалась.
Данная ошибка появляется, если файла действительно нет.
Ответить