Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 25.10.2018, 01:35
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от Chmil
ето не формирование JSON ответа?
JSON, но

Сообщение от Chmil
зачем exit?
для чего? я ж не использую GET запросы
если перед выводом в браузер json строки до этого вывода или после него будет также вывод в браузер, то клиент получит невалидный json. Как при этом поступит JQ написано выше.

Ваша страница ведь формируется не этим куском кода, а как мне не ведомо. Но по коду я могу только предполагать, что запрос (action формы) как-то связан с выводом в браузер (тут код формы и т.п.). Если это так, то обработчик запроса клиента должен быть первым в коде и завершается выходом, чтобы код следуемый далее и связанный с выводом не исполнялся.

Если запрос не связан с другими выводами и единственный вывод в нем, это вывод json, то все нормально.

Это вы должны знать и иметь ввиду, ибо кроме вас полностью серверного кода никто не видит.
Ответить с цитированием
  #12 (permalink)  
Старый 25.10.2018, 01:38
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

На клиенте есть установленный обработчик, но нет запроса. Это могут быть конфликты или что-то мешает и т.п. Для начала заремируйте подключение сторонних скриптов - метрику яшки и прочую лабуду, она пока не нужна, иначе в отладчике ... Проверить сам обработчик можно добавлением в его код вывод чего угодно в консоль, если он будет, то проблемы с самим методом $.ajax.
Ответить с цитированием
  #13 (permalink)  
Старый 25.10.2018, 21:02
Аспирант
Отправить личное сообщение для Chmil Посмотреть профиль Найти все сообщения от Chmil
 
Регистрация: 07.07.2017
Сообщений: 41

Цитата:
заремируйте подключение сторонних скриптов
на локалхосте нет ничего стороннего, там просто установлен вордпрес с дефолтной темой, там должно работать, но не работает

Цитата:
Проверить сам обработчик можно добавлением в его код вывод чего угодно в консоль
ето можно сделать в браузере в инспекторе (F12)?

Цитата:
проблемы с самим методом $.ajax
скорее всего так и есть, даже не с методом а с спецификой взаимодействия с вордпрес
Ответить с цитированием
  #14 (permalink)  
Старый 26.10.2018, 03:30
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

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

Просто в обработчик отправления формы добавить строку: console.log(1) (до $.ajax), если в консоли отладчика будет вывод 1, значит нет иных кто бы мешал отправлению формы и проблема с $.ajax. В WP нет специфики взаимодействия, есть правила подключения плагинов и своих скриптов, что описано в документации WP. Их немного меняют от версии к версии, но все это отражается в доках. Собственно такой порядок не только в WP, но и в других CMS.

Интересно, а зачем на сервер отправлять запрос для перересчета каких-то килограммов, очень мощная математика? )

Последний раз редактировалось laimas, 26.10.2018 в 03:38.
Ответить с цитированием
  #15 (permalink)  
Старый 26.10.2018, 10:44
Аспирант
Отправить личное сообщение для Chmil Посмотреть профиль Найти все сообщения от Chmil
 
Регистрация: 07.07.2017
Сообщений: 41

Цитата:
в обработчик отправления формы добавить строку: console.log(1) (до $.ajax)
с етим понял, вечером попробую

Цитата:
зачем на сервер отправлять запрос для перересчета каких-то килограммов, очень мощная математика?
не мощная, просто в JS я очень слабо разбираюсь, по этому делаю как я занаю, и как мне проще, по сути мне нужен простой конвертер, он может быть на чем угодно, главное чтобы работал, большое спасибо Вам за помощь
Ответить с цитированием
  #16 (permalink)  
Старый 26.10.2018, 11:57
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от Chmil
по сути мне нужен простой конвертер, он может быть на чем угодно
Ну так сама математика конвертирования не меняется от языка к языку, и не так сложно ее описать и на JS.
Если бы сервер по цвету глаз вычислял, что нужно самую малость и будет счастье, тогда бы был смысл прятать этот чудодейственный расчет на сервере. А простой конвертор, тут не выгодно обслуживать запросы и соединения, это должно быть сервисом на клиенте. С этого вопроса и нужно было начинать.
Ответить с цитированием
  #17 (permalink)  
Старый 26.10.2018, 12:26
Аватар для SuperZen
Профессор
Отправить личное сообщение для SuperZen Посмотреть профиль Найти все сообщения от SuperZen
 
Регистрация: 08.11.2017
Сообщений: 641

jQuery(document).ready(function($){
       $('#btn_submit').click(function(){

Есть варик, что вызывается до того, как загружена форма, и поэтому слушатель не устанавливается и поэтому не срабатывает клик.

Я уже намекал, что надо открыть консоль разработчика, и там смотреть результаты "клика", надо в саму ф-цию клика поставить что-нибудь типа console.log('clicked'), что бы убедиться что слушатель установлен и отрабатывает.

После этого, если слушатель работает, нужно убедиться, что нет ошибок при выполнении ajax, посмотреть в разделе "сеть", на предмет, был ли вообще ajax запрос, после клика...
Ответить с цитированием
  #18 (permalink)  
Старый 27.10.2018, 23:03
Аспирант
Отправить личное сообщение для Chmil Посмотреть профиль Найти все сообщения от Chmil
 
Регистрация: 07.07.2017
Сообщений: 41

Цитата:
в обработчик отправления формы добавить строку: console.log(1) (до $.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) {


возможно действительно
Цитата:
Есть варик, что вызывается до того, как загружена форма, и поэтому слушатель не устанавливается и поэтому не срабатывает клик.
но как с етим бороться?

Цитата:
не так сложно ее описать и на JS
да, попробую сейчас написать калькулятор на js, как говорится гугл мне в помощь, но все-же мне бы хотелось решить вопрос отправки данных из полей формы аяксом, так сказать на будущее...
Ответить с цитированием
  #19 (permalink)  
Старый 28.10.2018, 03:11
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

У полей формы нет типов kg и lb, это удалить как мусор. А вот имена этим полям нужно определить - name="kg", name="lb", иначе на сервер такие поля не передаются по умолчанию. Кнопка отправления формы должна быть либо type="submit", либо <button>Посчитать</button>, и все будет работать.
Ответить с цитированием
  #20 (permalink)  
Старый 28.10.2018, 12:28
Аспирант
Отправить личное сообщение для Chmil Посмотреть профиль Найти все сообщения от Chmil
 
Регистрация: 07.07.2017
Сообщений: 41

сделал как Вы описали, теперь по нажатию на кнопку "Посчитать" информация в консоль выводится, но на сервер по прежнему данные не передаются, теперь получается проблема с самим методом 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>';
}

?>
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
передать данные со ссылки в input type hidden j0hnik Общие вопросы Javascript 7 29.12.2016 15:05
Передать элементы php массива в js переменную zav Элементы интерфейса 3 22.11.2016 14:35
Как подключить данные с PHP по средствам JS на удаленный сервер. Nyam Элементы интерфейса 13 11.04.2014 17:14
Как вывести данные из PHP Sherminator Events/DOM/Window 2 07.08.2012 20:11
Не могу передать скриптом значение формы youko Элементы интерфейса 1 06.07.2009 19:52