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

немного поправил код (ниже выкладываю полностью 2 файла), но он также не рабочий (((. В JS я не силен, поэтому обратился к Вам за помощью и исходя из выше изложенного есть вопросы, заранее извините если они слишком элементарны:

Цитата:
Нельзя так проверить передачу в json формате, ибо клиент в вашем случае JSON не получает!
почему нельзя проверить переменную на существование и если она существует выполнить определенный код?

$arr = array('result' => '123456789');
echo json_encode($arr);

ето не формирование JSON ответа?

Цитата:
Если вы не проанализируете другие параметры функции success
я думал что ето масив $arr = array('result' => '123456789'); и он же и есть ответ клиенту

строка add_shortcode('lbkggetfishbychmil', 'lb_kg_getfish'); добавляет шорткод - lbkggetfishbychmil, который потом используется для вставки формы и ответа в запись.

Цитата:
ответ клиенту и обязательный exit
зачем exit?

Цитата:
далее код обрабатывающий GET запрос
для чего? я ж не использую GET запросы

Ниже выкладываю 2 файла полностью, они размещены в папке плагинов wordpress - /wp-content/plugins/lb-kg/ . Для вызова формы в самой записи, например как тут http://muz-bar.ru/zemfira-poobeshhal...vyj-albom.html нужно сначала в админке вордпрес активировать данный плагин, а потом во время редактирования записи вставить в нее шорткод в таком формате [lbkggetfishbychmil]. Все работает кроме скрипта отправки данных полей формы на JS.

php-файл:
<?php
/*
* Plugin Name: Lb & Kg
* Description: Перевод веса фунтов в килограммы и наоборот
* Author: Chmil
* Version: 1.0
*/

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 type="kg" id="kg" placeholder="кг"></p>';
 echo '<p><input type="lb" id="lb" placeholder="lb"></p>';
 echo '<input id="btn_submit" type="button" value="Посчитать" />';
 echo '</fieldset>';
 echo '</form>';
 echo '<div class="messages"></div>';
 echo '</div>';
}

if (isset($_POST["kg"])) {
	
//добавил чтобы увидеть передаются ли данные
	$file = "text.txt";
if (!file_exists($file)) {
    $fp = fopen($file, "w"); 
    fwrite($fp, $_POST["kg"]);
    fclose($fp);
}
	
	$arr = array('result' => '123456789');
	
	echo json_encode($arr);
	
}

?>


js-файл:
jQuery(document).ready(function($){
			$('#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); // выводим ответ сервера
					}
				});
			});
		});

Последний раз редактировалось Chmil, 25.10.2018 в 01:12.
Ответить с цитированием