Muvka Опубліковано: 15 листопада 2019 Share Опубліковано: 15 листопада 2019 (змінено) Есть, кто реализовывал подобное или может материалы видел, поделитесь. Лучшее, что приходит на ум - в контроллере собирать 2 url для action и тот, который для ajax вставлять в атрибут data-action. Ну и соответственно создать метод, который обработает запрос. Змінено 15 листопада 2019 користувачем Muvka Надіслати Поділитися на інших сайтах More sharing options...
esculapra Опубліковано: 15 листопада 2019 Share Опубліковано: 15 листопада 2019 1 час назад, Muvka сказал: Есть, кто реализовывал подобное или может материалы видел, поделитесь. Лучшее, что приходит на ум - в контроллере собирать 2 url для action и тот, который для ajax вставлять в атрибут data-action. Ну и соответственно создать метод, который обработает запрос. а зачем? в аяксную отправку просто добавить данные, типа, ajax:true А в обработчике отслеживать этот параметр, и дальше создать условие для вывода результата. Надіслати Поділитися на інших сайтах More sharing options... Muvka Опубліковано: 15 листопада 2019 Автор Share Опубліковано: 15 листопада 2019 2 минуты назад, esculapra сказал: а зачем? в аяксную отправку просто добавить данные, типа, ajax:true А в обработчике отслеживать этот параметр, и дальше создать условие для вывода результата. Ajax и по-другому можно определить. Например так: if(isset($this->request->server['HTTP_X_REQUESTED_WITH']) && !empty($this->request->server['HTTP_X_REQUESTED_WITH']) && strtolower($this->request->server['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest')) Проблема в другом. Код слишком захламленным получается. Много вложенных if. Например вот регистрация: if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) { $customer_id = $this->model_account_customer->addCustomer($this->request->post); // Clear any previous login attempts for unregistered accounts. $this->model_account_customer->deleteLoginAttempts($this->request->post['email']); $this->customer->login($this->request->post['email'], $this->request->post['password']); unset($this->session->data['guest']); $this->response->redirect($this->url->link('account/success')); } нужно валидацию внутри условия уже проводить, потом условие на результат валидации и только потом на ajax. Мне это не очень нравится.... Надіслати Поділитися на інших сайтах More sharing options... Muvka Опубліковано: 15 листопада 2019 Автор Share Опубліковано: 15 листопада 2019 (змінено) Вот на скорую руку накидал. Получается что-то типа этого. Не проверял как работает, но мне такой код не очень нравится if (($this->request->server['REQUEST_METHOD'] == 'POST')) { $validate = $this->validate(); $ajax_request = isset($this->request->server['HTTP_X_REQUESTED_WITH']) && !empty($this->request->server['HTTP_X_REQUESTED_WITH']) && strtolower($this->request->server['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest'; if ($validate) { $this->request->post['email'] = 'default' . round(microtime(true) * 1000) . '@localhost.ru'; $customer_id = $this->model_account_customer->addCustomer($this->request->post); $this->model_account_customer->deleteLoginAttempts($this->request->post['telephone']); $this->customer->login($this->request->post['telephone'], $this->request->post['password']); unset($this->session->data['guest']); if ($ajax_request) { $json = array(); $json['redirect'] = $this->url->link('account/success'); $this->response->addHeader('Content-Type: application/json'); $this->response->setOutput(json_encode($json)); } else { $this->response->redirect($this->url->link('account/success')); } } elseif ($ajax_request) { $this->response->addHeader('Content-Type: application/json'); $this->response->setOutput(json_encode(array( 'error' => $this->error; ))); } } Змінено 15 листопада 2019 користувачем Muvka Надіслати Поділитися на інших сайтах More sharing options... esculapra Опубліковано: 15 листопада 2019 Share Опубліковано: 15 листопада 2019 а не проще ? и в приведенном коде я не нашел много if if(isset($this->request->post['ajax'])){ // } Надіслати Поділитися на інших сайтах More sharing options... Muvka Опубліковано: 15 листопада 2019 Автор Share Опубліковано: 15 листопада 2019 2 минуты назад, esculapra сказал: а не проще ? и в приведенном коде я не нашел много if if(isset($this->request->post['ajax'])){ // } А я ажно 3ю вложенность условий вижу... Надіслати Поділитися на інших сайтах More sharing options... esculapra Опубліковано: 15 листопада 2019 Share Опубліковано: 15 листопада 2019 if ($ajax_request) { echo 'Its okay!'; exit(); } $this->response->redirect($this->url->link('account/success')); Надіслати Поділитися на інших сайтах More sharing options... Muvka Опубліковано: 15 листопада 2019 Автор Share Опубліковано: 15 листопада 2019 1 минуту назад, esculapra сказал: if ($ajax_request) { echo 'Its okay!'; exit(); } $this->response->redirect($this->url->link('account/success')); Да, спасибо, в 2х местах еще exit() поставил. Вам нравится такой код? Надіслати Поділитися на інших сайтах More sharing options... esculapra Опубліковано: 15 листопада 2019 Share Опубліковано: 15 листопада 2019 Я в своих разработках результат вывожу своеобразной функцией private function ajaxResponseError($message,$warning=false) { if($warning)$return['status']='Warning'; else $return['status']='Error'; $return['result']=$message; echo json_encode($return); exit ; } Вот если сервер возвратит ошибку, то выводится сообщение, а если сработает функция private function ajaxResponseDone($message,$params=null) { if(isset($params)) foreach($params as $key=>$value) { $return[$key]=$value; } $return['status']='Done'; $return['result']=$message; $return['success']=true; echo json_encode($return); exit ; } То (применительно к коду регистрации) можно выести сообщение о успешной реге и после некоторой задержки сделать перенаправление на страницу входа Надіслати Поділитися на інших сайтах More sharing options... esculapra Опубліковано: 15 листопада 2019 Share Опубліковано: 15 листопада 2019 7 минут назад, Muvka сказал: в 2х местах еще exit() поставил. Вам нравится такой код? Это нужно для прерывания работы скрипта и отправки результата. Иначе скрипт пойдет дальше и страница перезагрузится. Надіслати Поділитися на інших сайтах More sharing options... Muvka Опубліковано: 15 листопада 2019 Автор Share Опубліковано: 15 листопада 2019 4 минуты назад, esculapra сказал: Это нужно для прерывания работы скрипта и отправки результата. Иначе скрипт пойдет дальше и страница перезагрузится. Тут вы меня неправильно поняли. Последнее предложение не про exit(). Надіслати Поділитися на інших сайтах More sharing options... esculapra Опубліковано: 15 листопада 2019 Share Опубліковано: 15 листопада 2019 21 минуту назад, Muvka сказал: $this->response->addHeader('Content-Type: application/json'); $this->response->setOutput(json_encode($json)); Это вообще лишний код. Почуему? Потому что клиетнт ожидает определенный тип данных (это задано в установках). А редирект можно переместить в шаблон - и он произойдет при успешном статусе. function checkRegexp(fun) { url=$('#url_no_mod').val()+'&'+$('#token_indent').val()+'='+$('#token').val(); form = $("#regexpForm").serializeArray(); jQuery.ajax({ url: url, type:"post", dataType: "json", // ожидаем получение json data:{ controller:"antivirus", task:"checkRegexp", fun:fun, form:form }, success: function(data){ if(data.success){ window.location=data.redirec; //это как пример } else alert(data.message); } } ); } Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 3.x Opencart 3.x: Налаштування та оптимізація Паттерн обработки форм отправленных Ajax и обычным способом Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich Промо банери в категоріях товарів Автор: IHOR1989 Trend - адаптивний універсальний шаблон Автор: DSV × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
Muvka Опубліковано: 15 листопада 2019 Автор Share Опубліковано: 15 листопада 2019 2 минуты назад, esculapra сказал: а зачем? в аяксную отправку просто добавить данные, типа, ajax:true А в обработчике отслеживать этот параметр, и дальше создать условие для вывода результата. Ajax и по-другому можно определить. Например так: if(isset($this->request->server['HTTP_X_REQUESTED_WITH']) && !empty($this->request->server['HTTP_X_REQUESTED_WITH']) && strtolower($this->request->server['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest')) Проблема в другом. Код слишком захламленным получается. Много вложенных if. Например вот регистрация: if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) { $customer_id = $this->model_account_customer->addCustomer($this->request->post); // Clear any previous login attempts for unregistered accounts. $this->model_account_customer->deleteLoginAttempts($this->request->post['email']); $this->customer->login($this->request->post['email'], $this->request->post['password']); unset($this->session->data['guest']); $this->response->redirect($this->url->link('account/success')); } нужно валидацию внутри условия уже проводить, потом условие на результат валидации и только потом на ajax. Мне это не очень нравится.... Надіслати Поділитися на інших сайтах More sharing options...
Muvka Опубліковано: 15 листопада 2019 Автор Share Опубліковано: 15 листопада 2019 (змінено) Вот на скорую руку накидал. Получается что-то типа этого. Не проверял как работает, но мне такой код не очень нравится if (($this->request->server['REQUEST_METHOD'] == 'POST')) { $validate = $this->validate(); $ajax_request = isset($this->request->server['HTTP_X_REQUESTED_WITH']) && !empty($this->request->server['HTTP_X_REQUESTED_WITH']) && strtolower($this->request->server['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest'; if ($validate) { $this->request->post['email'] = 'default' . round(microtime(true) * 1000) . '@localhost.ru'; $customer_id = $this->model_account_customer->addCustomer($this->request->post); $this->model_account_customer->deleteLoginAttempts($this->request->post['telephone']); $this->customer->login($this->request->post['telephone'], $this->request->post['password']); unset($this->session->data['guest']); if ($ajax_request) { $json = array(); $json['redirect'] = $this->url->link('account/success'); $this->response->addHeader('Content-Type: application/json'); $this->response->setOutput(json_encode($json)); } else { $this->response->redirect($this->url->link('account/success')); } } elseif ($ajax_request) { $this->response->addHeader('Content-Type: application/json'); $this->response->setOutput(json_encode(array( 'error' => $this->error; ))); } } Змінено 15 листопада 2019 користувачем Muvka Надіслати Поділитися на інших сайтах More sharing options...
esculapra Опубліковано: 15 листопада 2019 Share Опубліковано: 15 листопада 2019 а не проще ? и в приведенном коде я не нашел много if if(isset($this->request->post['ajax'])){ // } Надіслати Поділитися на інших сайтах More sharing options... Muvka Опубліковано: 15 листопада 2019 Автор Share Опубліковано: 15 листопада 2019 2 минуты назад, esculapra сказал: а не проще ? и в приведенном коде я не нашел много if if(isset($this->request->post['ajax'])){ // } А я ажно 3ю вложенность условий вижу... Надіслати Поділитися на інших сайтах More sharing options... esculapra Опубліковано: 15 листопада 2019 Share Опубліковано: 15 листопада 2019 if ($ajax_request) { echo 'Its okay!'; exit(); } $this->response->redirect($this->url->link('account/success')); Надіслати Поділитися на інших сайтах More sharing options... Muvka Опубліковано: 15 листопада 2019 Автор Share Опубліковано: 15 листопада 2019 1 минуту назад, esculapra сказал: if ($ajax_request) { echo 'Its okay!'; exit(); } $this->response->redirect($this->url->link('account/success')); Да, спасибо, в 2х местах еще exit() поставил. Вам нравится такой код? Надіслати Поділитися на інших сайтах More sharing options... esculapra Опубліковано: 15 листопада 2019 Share Опубліковано: 15 листопада 2019 Я в своих разработках результат вывожу своеобразной функцией private function ajaxResponseError($message,$warning=false) { if($warning)$return['status']='Warning'; else $return['status']='Error'; $return['result']=$message; echo json_encode($return); exit ; } Вот если сервер возвратит ошибку, то выводится сообщение, а если сработает функция private function ajaxResponseDone($message,$params=null) { if(isset($params)) foreach($params as $key=>$value) { $return[$key]=$value; } $return['status']='Done'; $return['result']=$message; $return['success']=true; echo json_encode($return); exit ; } То (применительно к коду регистрации) можно выести сообщение о успешной реге и после некоторой задержки сделать перенаправление на страницу входа Надіслати Поділитися на інших сайтах More sharing options... esculapra Опубліковано: 15 листопада 2019 Share Опубліковано: 15 листопада 2019 7 минут назад, Muvka сказал: в 2х местах еще exit() поставил. Вам нравится такой код? Это нужно для прерывания работы скрипта и отправки результата. Иначе скрипт пойдет дальше и страница перезагрузится. Надіслати Поділитися на інших сайтах More sharing options... Muvka Опубліковано: 15 листопада 2019 Автор Share Опубліковано: 15 листопада 2019 4 минуты назад, esculapra сказал: Это нужно для прерывания работы скрипта и отправки результата. Иначе скрипт пойдет дальше и страница перезагрузится. Тут вы меня неправильно поняли. Последнее предложение не про exit(). Надіслати Поділитися на інших сайтах More sharing options... esculapra Опубліковано: 15 листопада 2019 Share Опубліковано: 15 листопада 2019 21 минуту назад, Muvka сказал: $this->response->addHeader('Content-Type: application/json'); $this->response->setOutput(json_encode($json)); Это вообще лишний код. Почуему? Потому что клиетнт ожидает определенный тип данных (это задано в установках). А редирект можно переместить в шаблон - и он произойдет при успешном статусе. function checkRegexp(fun) { url=$('#url_no_mod').val()+'&'+$('#token_indent').val()+'='+$('#token').val(); form = $("#regexpForm").serializeArray(); jQuery.ajax({ url: url, type:"post", dataType: "json", // ожидаем получение json data:{ controller:"antivirus", task:"checkRegexp", fun:fun, form:form }, success: function(data){ if(data.success){ window.location=data.redirec; //это как пример } else alert(data.message); } } ); } Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 3.x Opencart 3.x: Налаштування та оптимізація Паттерн обработки форм отправленных Ajax и обычным способом Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich Промо банери в категоріях товарів Автор: IHOR1989 Trend - адаптивний універсальний шаблон Автор: DSV × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
Muvka Опубліковано: 15 листопада 2019 Автор Share Опубліковано: 15 листопада 2019 2 минуты назад, esculapra сказал: а не проще ? и в приведенном коде я не нашел много if if(isset($this->request->post['ajax'])){ // } А я ажно 3ю вложенность условий вижу... Надіслати Поділитися на інших сайтах More sharing options...
esculapra Опубліковано: 15 листопада 2019 Share Опубліковано: 15 листопада 2019 if ($ajax_request) { echo 'Its okay!'; exit(); } $this->response->redirect($this->url->link('account/success')); Надіслати Поділитися на інших сайтах More sharing options... Muvka Опубліковано: 15 листопада 2019 Автор Share Опубліковано: 15 листопада 2019 1 минуту назад, esculapra сказал: if ($ajax_request) { echo 'Its okay!'; exit(); } $this->response->redirect($this->url->link('account/success')); Да, спасибо, в 2х местах еще exit() поставил. Вам нравится такой код? Надіслати Поділитися на інших сайтах More sharing options... esculapra Опубліковано: 15 листопада 2019 Share Опубліковано: 15 листопада 2019 Я в своих разработках результат вывожу своеобразной функцией private function ajaxResponseError($message,$warning=false) { if($warning)$return['status']='Warning'; else $return['status']='Error'; $return['result']=$message; echo json_encode($return); exit ; } Вот если сервер возвратит ошибку, то выводится сообщение, а если сработает функция private function ajaxResponseDone($message,$params=null) { if(isset($params)) foreach($params as $key=>$value) { $return[$key]=$value; } $return['status']='Done'; $return['result']=$message; $return['success']=true; echo json_encode($return); exit ; } То (применительно к коду регистрации) можно выести сообщение о успешной реге и после некоторой задержки сделать перенаправление на страницу входа Надіслати Поділитися на інших сайтах More sharing options... esculapra Опубліковано: 15 листопада 2019 Share Опубліковано: 15 листопада 2019 7 минут назад, Muvka сказал: в 2х местах еще exit() поставил. Вам нравится такой код? Это нужно для прерывания работы скрипта и отправки результата. Иначе скрипт пойдет дальше и страница перезагрузится. Надіслати Поділитися на інших сайтах More sharing options... Muvka Опубліковано: 15 листопада 2019 Автор Share Опубліковано: 15 листопада 2019 4 минуты назад, esculapra сказал: Это нужно для прерывания работы скрипта и отправки результата. Иначе скрипт пойдет дальше и страница перезагрузится. Тут вы меня неправильно поняли. Последнее предложение не про exit(). Надіслати Поділитися на інших сайтах More sharing options... esculapra Опубліковано: 15 листопада 2019 Share Опубліковано: 15 листопада 2019 21 минуту назад, Muvka сказал: $this->response->addHeader('Content-Type: application/json'); $this->response->setOutput(json_encode($json)); Это вообще лишний код. Почуему? Потому что клиетнт ожидает определенный тип данных (это задано в установках). А редирект можно переместить в шаблон - и он произойдет при успешном статусе. function checkRegexp(fun) { url=$('#url_no_mod').val()+'&'+$('#token_indent').val()+'='+$('#token').val(); form = $("#regexpForm").serializeArray(); jQuery.ajax({ url: url, type:"post", dataType: "json", // ожидаем получение json data:{ controller:"antivirus", task:"checkRegexp", fun:fun, form:form }, success: function(data){ if(data.success){ window.location=data.redirec; //это как пример } else alert(data.message); } } ); } Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 3.x Opencart 3.x: Налаштування та оптимізація Паттерн обработки форм отправленных Ajax и обычным способом Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich Промо банери в категоріях товарів Автор: IHOR1989 Trend - адаптивний універсальний шаблон Автор: DSV
Muvka Опубліковано: 15 листопада 2019 Автор Share Опубліковано: 15 листопада 2019 1 минуту назад, esculapra сказал: if ($ajax_request) { echo 'Its okay!'; exit(); } $this->response->redirect($this->url->link('account/success')); Да, спасибо, в 2х местах еще exit() поставил. Вам нравится такой код? Надіслати Поділитися на інших сайтах More sharing options...
esculapra Опубліковано: 15 листопада 2019 Share Опубліковано: 15 листопада 2019 Я в своих разработках результат вывожу своеобразной функцией private function ajaxResponseError($message,$warning=false) { if($warning)$return['status']='Warning'; else $return['status']='Error'; $return['result']=$message; echo json_encode($return); exit ; } Вот если сервер возвратит ошибку, то выводится сообщение, а если сработает функция private function ajaxResponseDone($message,$params=null) { if(isset($params)) foreach($params as $key=>$value) { $return[$key]=$value; } $return['status']='Done'; $return['result']=$message; $return['success']=true; echo json_encode($return); exit ; } То (применительно к коду регистрации) можно выести сообщение о успешной реге и после некоторой задержки сделать перенаправление на страницу входа Надіслати Поділитися на інших сайтах More sharing options... esculapra Опубліковано: 15 листопада 2019 Share Опубліковано: 15 листопада 2019 7 минут назад, Muvka сказал: в 2х местах еще exit() поставил. Вам нравится такой код? Это нужно для прерывания работы скрипта и отправки результата. Иначе скрипт пойдет дальше и страница перезагрузится. Надіслати Поділитися на інших сайтах More sharing options... Muvka Опубліковано: 15 листопада 2019 Автор Share Опубліковано: 15 листопада 2019 4 минуты назад, esculapra сказал: Это нужно для прерывания работы скрипта и отправки результата. Иначе скрипт пойдет дальше и страница перезагрузится. Тут вы меня неправильно поняли. Последнее предложение не про exit(). Надіслати Поділитися на інших сайтах More sharing options... esculapra Опубліковано: 15 листопада 2019 Share Опубліковано: 15 листопада 2019 21 минуту назад, Muvka сказал: $this->response->addHeader('Content-Type: application/json'); $this->response->setOutput(json_encode($json)); Это вообще лишний код. Почуему? Потому что клиетнт ожидает определенный тип данных (это задано в установках). А редирект можно переместить в шаблон - и он произойдет при успешном статусе. function checkRegexp(fun) { url=$('#url_no_mod').val()+'&'+$('#token_indent').val()+'='+$('#token').val(); form = $("#regexpForm").serializeArray(); jQuery.ajax({ url: url, type:"post", dataType: "json", // ожидаем получение json data:{ controller:"antivirus", task:"checkRegexp", fun:fun, form:form }, success: function(data){ if(data.success){ window.location=data.redirec; //это как пример } else alert(data.message); } } ); } Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 3.x Opencart 3.x: Налаштування та оптимізація Паттерн обработки форм отправленных Ajax и обычным способом
esculapra Опубліковано: 15 листопада 2019 Share Опубліковано: 15 листопада 2019 7 минут назад, Muvka сказал: в 2х местах еще exit() поставил. Вам нравится такой код? Это нужно для прерывания работы скрипта и отправки результата. Иначе скрипт пойдет дальше и страница перезагрузится. Надіслати Поділитися на інших сайтах More sharing options... Muvka Опубліковано: 15 листопада 2019 Автор Share Опубліковано: 15 листопада 2019 4 минуты назад, esculapra сказал: Это нужно для прерывания работы скрипта и отправки результата. Иначе скрипт пойдет дальше и страница перезагрузится. Тут вы меня неправильно поняли. Последнее предложение не про exit(). Надіслати Поділитися на інших сайтах More sharing options... esculapra Опубліковано: 15 листопада 2019 Share Опубліковано: 15 листопада 2019 21 минуту назад, Muvka сказал: $this->response->addHeader('Content-Type: application/json'); $this->response->setOutput(json_encode($json)); Это вообще лишний код. Почуему? Потому что клиетнт ожидает определенный тип данных (это задано в установках). А редирект можно переместить в шаблон - и он произойдет при успешном статусе. function checkRegexp(fun) { url=$('#url_no_mod').val()+'&'+$('#token_indent').val()+'='+$('#token').val(); form = $("#regexpForm").serializeArray(); jQuery.ajax({ url: url, type:"post", dataType: "json", // ожидаем получение json data:{ controller:"antivirus", task:"checkRegexp", fun:fun, form:form }, success: function(data){ if(data.success){ window.location=data.redirec; //это как пример } else alert(data.message); } } ); } Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку
Muvka Опубліковано: 15 листопада 2019 Автор Share Опубліковано: 15 листопада 2019 4 минуты назад, esculapra сказал: Это нужно для прерывания работы скрипта и отправки результата. Иначе скрипт пойдет дальше и страница перезагрузится. Тут вы меня неправильно поняли. Последнее предложение не про exit(). Надіслати Поділитися на інших сайтах More sharing options...
esculapra Опубліковано: 15 листопада 2019 Share Опубліковано: 15 листопада 2019 21 минуту назад, Muvka сказал: $this->response->addHeader('Content-Type: application/json'); $this->response->setOutput(json_encode($json)); Это вообще лишний код. Почуему? Потому что клиетнт ожидает определенный тип данных (это задано в установках). А редирект можно переместить в шаблон - и он произойдет при успешном статусе. function checkRegexp(fun) { url=$('#url_no_mod').val()+'&'+$('#token_indent').val()+'='+$('#token').val(); form = $("#regexpForm").serializeArray(); jQuery.ajax({ url: url, type:"post", dataType: "json", // ожидаем получение json data:{ controller:"antivirus", task:"checkRegexp", fun:fun, form:form }, success: function(data){ if(data.success){ window.location=data.redirec; //это как пример } else alert(data.message); } } ); } Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0
Recommended Posts