Как сделать чтобы не просходил переход по ссылке PJAX???

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Brainfuck
Сообщения: 313
Зарегистрирован: 2018.02.19, 14:20

Как сделать чтобы не просходил переход по ссылке PJAX???

Сообщение Brainfuck »

Раз никто не отвечает в одной теме буду плодить дубли. Есть PJAX контейнер. Мне надо чтобы при клике по ссылке он асинхронно перезагружался как и должен. Вместо этого у меня просто происходит переход по ссылке. Параметр enablePushState у контейнера в false и у ссылки data-pjax в true, но это не помогает!!! Помогите!!! Это срочно!!! Второй день мучаюсь!!!
urichalex
Сообщения: 994
Зарегистрирован: 2015.08.07, 11:03

Re: Как сделать чтобы не просходил переход по ссылке PJAX???

Сообщение urichalex »

1. Смотреть, уходит ли запрос асинхронно.
2. Если нет, проверить, находится ли ссылка внутри pjax контейнера, и имеет ли атрибут data-pjax=1
3. Проверить ответ от сервера. Код ответа может быть только 200. Никаких редиректов и ошибок
4. Проверить время выполнения запроса. Если запрос выполняется дольше, чем ждет pjax, установить timeout повыше
5. Как вариант можно поискать по форуму, так как обсуждалось уже много раз
Brainfuck
Сообщения: 313
Зарегистрирован: 2018.02.19, 14:20

Re: Как сделать чтобы не просходил переход по ссылке PJAX???

Сообщение Brainfuck »

urichalex писал(а): 2019.01.22, 12:40 1. Смотреть, уходит ли запрос асинхронно.
2. Если нет, проверить, находится ли ссылка внутри pjax контейнера, и имеет ли атрибут data-pjax=1
3. Проверить ответ от сервера. Код ответа может быть только 200. Никаких редиректов и ошибок
4. Проверить время выполнения запроса. Если запрос выполняется дольше, чем ждет pjax, установить timeout повыше
5. Как вариант можно поискать по форуму, так как обсуждалось уже много раз
1. Уходит, но респонз не возвращает
2. Да, я же сказал, имеет и внутри.
3. Респонза нет от асинхронного запроса. Я смотрел в дебаг-тулз. Просто нет респонза и все тут. Никакого.
4. Вообще в запросе нет никаких тяжелых операций. Ну только рендеринг. Модели как видно в первой теме - очень тонкие - по одному текстовому полю. Сохранить/удалить их много времени не надо. Но попробую увеличить таймаут...
5. Я гуглил разумеется. И на этом форуме тоже темы видел. Но моей проблемы нигде нет. Чаще всего это решается установкой enablePushState и data-pjax, но мне не помогло
someweb
Сообщения: 552
Зарегистрирован: 2017.03.09, 10:12

Re: Как сделать чтобы не просходил переход по ссылке PJAX???

Сообщение someweb »

А что вы хотите, если у вас нет ответа? Увеличивайте timeout.
Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа. Роберт Шекли.
Brainfuck
Сообщения: 313
Зарегистрирован: 2018.02.19, 14:20

Re: Как сделать чтобы не просходил переход по ссылке PJAX???

Сообщение Brainfuck »

someweb писал(а): 2019.01.22, 14:32 А что вы хотите, если у вас нет ответа? Увеличивайте timeout.
Проверил. Увеличение таймаута никак не сказывается на моей проблеме.
Brainfuck
Сообщения: 313
Зарегистрирован: 2018.02.19, 14:20

Re: Как сделать чтобы не просходил переход по ссылке PJAX???

Сообщение Brainfuck »

Так! Со ссылками я нашел решение - надо указать data-method в post. Тогда все нормально. Но с формами по прежнему проблема...
urichalex
Сообщения: 994
Зарегистрирован: 2015.08.07, 11:03

Re: Как сделать чтобы не просходил переход по ссылке PJAX???

Сообщение urichalex »

data-method=post участвует в обход пиджака. Это фича yii, она отправляет обычный post запрос
urichalex
Сообщения: 994
Зарегистрирован: 2015.08.07, 11:03

Re: Как сделать чтобы не просходил переход по ссылке PJAX???

Сообщение urichalex »

И еще забыл указать важное условие. Пиджак должен делать запрос на то же самое действие
Brainfuck
Сообщения: 313
Зарегистрирован: 2018.02.19, 14:20

Re: Как сделать чтобы не просходил переход по ссылке PJAX???

Сообщение Brainfuck »

urichalex писал(а): 2019.01.22, 15:39 data-method=post участвует в обход пиджака. Это фича yii, она отправляет обычный post запрос
Но ведь страница же не перезагружается - я это вижу. Как вы это объясните тогда?
Brainfuck
Сообщения: 313
Зарегистрирован: 2018.02.19, 14:20

Re: Как сделать чтобы не просходил переход по ссылке PJAX???

Сообщение Brainfuck »

urichalex писал(а): 2019.01.22, 15:39 И еще забыл указать важное условие. Пиджак должен делать запрос на то же самое действие
Какое "тоже самое"? Оно одно же вроде - удаление каталога (или элемента каталога).
urichalex
Сообщения: 994
Зарегистрирован: 2015.08.07, 11:03

Re: Как сделать чтобы не просходил переход по ссылке PJAX???

Сообщение urichalex »

Brainfuck писал(а): 2019.01.22, 15:42
urichalex писал(а): 2019.01.22, 15:39 И еще забыл указать важное условие. Пиджак должен делать запрос на то же самое действие
Какое "тоже самое"? Оно одно же вроде - удаление каталога (или элемента каталога).
Одно и то же, это значит, если текущий роут у вас /site/action то ссылка должна вести на это же самое действие
urichalex
Сообщения: 994
Зарегистрирован: 2015.08.07, 11:03

Re: Как сделать чтобы не просходил переход по ссылке PJAX???

Сообщение urichalex »

Brainfuck писал(а): 2019.01.22, 15:41
urichalex писал(а): 2019.01.22, 15:39 data-method=post участвует в обход пиджака. Это фича yii, она отправляет обычный post запрос
Но ведь страница же не перезагружается - я это вижу. Как вы это объясните тогда?
Ну дак запрос отправляется аяксом. Вы бы хоть часть кода показали. Че гадать
Brainfuck
Сообщения: 313
Зарегистрирован: 2018.02.19, 14:20

Re: Как сделать чтобы не просходил переход по ссылке PJAX???

Сообщение Brainfuck »

urichalex писал(а): 2019.01.22, 16:15 Ну дак запрос отправляется аяксом. Вы бы хоть часть кода показали. Че гадать
Тут весь код: viewtopic.php?f=19&t=49650&p=244612#p244612
urichalex
Сообщения: 994
Зарегистрирован: 2015.08.07, 11:03

Re: Как сделать чтобы не просходил переход по ссылке PJAX???

Сообщение urichalex »

Текущее действие - list
Форма на действие create
Ссылка на действие delete

delete !== list
create !== list
urichalex
Сообщения: 994
Зарегистрирован: 2015.08.07, 11:03

Re: Как сделать чтобы не просходил переход по ссылке PJAX???

Сообщение urichalex »

Суть пиджака в том, что он отправляет запрос на то же действие, в ответе получает полный html, который парсит и возвращает самому себе только то, что находится в его теле, и этим ответом тупо заменяет все содержимое своего тела
andku83
Сообщения: 988
Зарегистрирован: 2016.07.01, 10:24
Откуда: Харьков

Re: Как сделать чтобы не просходил переход по ссылке PJAX???

Сообщение andku83 »

urichalex писал(а): 2019.01.22, 16:55 Суть пиджака в том, что он отправляет запрос на то же действие, в ответе получает полный html, который парсит и возвращает самому себе только то, что находится в его теле, и этим ответом тупо заменяет все содержимое своего тела
Неверное утверждение, ему достаточно найти pjax-container со своим id, и даже в ответе не нужен полный хтмл, достаточно фрагмента с pjax.
viewtopic.php?p=244603#p244603
urichalex
Сообщения: 994
Зарегистрирован: 2015.08.07, 11:03

Re: Как сделать чтобы не просходил переход по ссылке PJAX???

Сообщение urichalex »

andku83 писал(а): 2019.01.23, 03:15
urichalex писал(а): 2019.01.22, 16:55 Суть пиджака в том, что он отправляет запрос на то же действие, в ответе получает полный html, который парсит и возвращает самому себе только то, что находится в его теле, и этим ответом тупо заменяет все содержимое своего тела
Неверное утверждение, ему достаточно найти pjax-container со своим id, и даже в ответе не нужен полный хтмл, достаточно фрагмента с pjax.
viewtopic.php?p=244603#p244603
Ну да. Если в ответе отдать просто текст, он его поместит в свой контейнер
Ответить