немного поправил код (ниже выкладываю полностью 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); // выводим ответ сервера
}
});
});
});