Цитата:
Цитата:
Ваша страница ведь формируется не этим куском кода, а как мне не ведомо. Но по коду я могу только предполагать, что запрос (action формы) как-то связан с выводом в браузер (тут код формы и т.п.). Если это так, то обработчик запроса клиента должен быть первым в коде и завершается выходом, чтобы код следуемый далее и связанный с выводом не исполнялся. Если запрос не связан с другими выводами и единственный вывод в нем, это вывод json, то все нормально. Это вы должны знать и иметь ввиду, ибо кроме вас полностью серверного кода никто не видит. |
На клиенте есть установленный обработчик, но нет запроса. Это могут быть конфликты или что-то мешает и т.п. Для начала заремируйте подключение сторонних скриптов - метрику яшки и прочую лабуду, она пока не нужна, иначе в отладчике ... Проверить сам обработчик можно добавлением в его код вывод чего угодно в консоль, если он будет, то проблемы с самим методом $.ajax.
|
Цитата:
Цитата:
Цитата:
|
Мне же недоступен ваш локальный сервер, если речь о нем, а в сети по ссылке просмотреть обработчики, а там все яшкой и прочими забито.
Просто в обработчик отправления формы добавить строку: console.log(1) (до $.ajax), если в консоли отладчика будет вывод 1, значит нет иных кто бы мешал отправлению формы и проблема с $.ajax. В WP нет специфики взаимодействия, есть правила подключения плагинов и своих скриптов, что описано в документации WP. Их немного меняют от версии к версии, но все это отражается в доках. Собственно такой порядок не только в WP, но и в других CMS. Интересно, а зачем на сервер отправлять запрос для перересчета каких-то килограммов, очень мощная математика? ) |
Цитата:
Цитата:
|
Цитата:
Если бы сервер по цвету глаз вычислял, что нужно самую малость и будет счастье, тогда бы был смысл прятать этот чудодейственный расчет на сервере. А простой конвертор, тут не выгодно обслуживать запросы и соединения, это должно быть сервисом на клиенте. С этого вопроса и нужно было начинать. |
jQuery(document).ready(function($){ $('#btn_submit').click(function(){ Есть варик, что вызывается до того, как загружена форма, и поэтому слушатель не устанавливается и поэтому не срабатывает клик. Я уже намекал, что надо открыть консоль разработчика, и там смотреть результаты "клика", надо в саму ф-цию клика поставить что-нибудь типа console.log('clicked'), что бы убедиться что слушатель установлен и отрабатывает. После этого, если слушатель работает, нужно убедиться, что нет ошибок при выполнении ajax, посмотреть в разделе "сеть", на предмет, был ли вообще ajax запрос, после клика... |
Цитата:
jQuery(document).ready(function($){ console.log(1); $('#lbkg_form').submit(function(e) { e.preventDefault(); $.ajax({ type: this.method, url: this.action, dataType: "json", // тип передачи данных - это тип ожидаемых данных от сервера data: $(this).serialize(), // после получения ответа сервера success: function(data){ $('.messages').html(data.result); // выводим ответ сервера } }); }); }); а вот если пишу так: jQuery(document).ready(function($){ $('#lbkg_form').submit(function(e) { console.log(1); e.preventDefault(); $.ajax({ type: this.method, url: this.action, dataType: "json", // тип передачи данных - это тип ожидаемых данных от сервера data: $(this).serialize(), // после получения ответа сервера success: function(data){ $('.messages').html(data.result); // выводим ответ сервера } }); }); }); то не работает, вот где запинание: $('#lbkg_form').submit(function(e) { возможно действительно Цитата:
Цитата:
|
У полей формы нет типов kg и lb, это удалить как мусор. А вот имена этим полям нужно определить - name="kg", name="lb", иначе на сервер такие поля не передаются по умолчанию. Кнопка отправления формы должна быть либо type="submit", либо <button>Посчитать</button>, и все будет работать.
|
сделал как Вы описали, теперь по нажатию на кнопку "Посчитать" информация в консоль выводится, но на сервер по прежнему данные не передаются, теперь получается проблема с самим методом ajax:
jQuery(document).ready(function($){ $('#lbkg_form').submit(function(e) { console.log(1); e.preventDefault(); $.ajax({ type: this.method, url: this.action, dataType: "json", // тип передачи данных - это тип ожидаемых данных от сервера data: $(this).serialize(), // после получения ответа сервера success: function(data){ $('.messages').html(data.result); // выводим ответ сервера } }); }); }); <?php /* * Plugin Name: Lb & Kg * Description: Перевод веса фунтов в килограммы и наоборот * Author: Chmil * Version: 1.0 */ if (isset($_POST["kg"])) { //добавил для проверки header('Location: http://www.google.com/'); $arr = array('result' => '123456789'); echo json_encode($arr); } add_shortcode('lbkggetfishbychmil', 'lb_kg_getfish'); function lb_kg_getfish($atts) { wp_enqueue_script('lb-kg-script', plugins_url('lb-kg.js', __FILE__), array('jquery')); wp_enqueue_style('lb-kg-styles', plugins_url('style.css', __FILE__)); echo '<div class="form-lb-kg">'; echo '<form action="' . plugins_url('lb-kg/lb-kg.php') . '" method="POST" id="lbkg_form">'; echo '<fieldset>'; echo '<legend>Онлайн конвертер (фунты & килограммы)</legend>'; echo '<p><input name="kg" id="kg" placeholder="кг"></p>'; echo '<p><input name="lb" id="lb" placeholder="lb"></p>'; echo '<input id="btn_submit" type="submit" value="Посчитать" />'; echo '</fieldset>'; echo '</form>'; echo '<div class="messages"></div>'; echo '</div>'; } ?> |
Часовой пояс GMT +3, время: 01:07. |