Intereting Posts
проверьте запрашивающий URL-адрес Добавить параметры сайта UI в многосайтовых сайтах> Информация Пользовательский тип записи по идентификатору в корневой папке Функциональность XOR для meta_query Страницы WordPress в массиве Стандартная цветовая схема администратора по умолчанию «синий» Выводить настраиваемое текстовое поле как неупорядоченный список синтаксическая ошибка – woocommerce Как заказывать сообщения (продукты woocommerce) в алфавитном порядке, но игнорировать определенные слова, например «The» и «An», Лучший способ импортировать пользователей, почту и категории из внешней базы данных Как загрузить локальные изменения на живой сервер без переопределения новых сообщений / страниц? Где вы добавляете код в пользовательские fuctions, чтобы он работал на определенной странице? WordPress 3.2 – удалена возможность выбора шаблона страницы в атрибутах страницы при добавлении новой страницы? Плагины с коммутационным кодом Добавление подписи в конце крошечного редактора mce

Использование Jquery submit с помощью ajax-запроса

Когда пользователь нажимает кнопку «отправить» в моей форме, мне бы хотелось, чтобы «это будет отображаться обратно», чтобы отображаться в сообщении.

Единственная ошибка консоли JS, которую я получаю:

Failed to load resource http://nikkomsgchannel/e?0017005e002b00560036004400190026002d0025002c005300…240020003700620024005b004a005500790053002c0045002b003600300026002f005d004c

Единственный код, который я изменил, это JQuery, перед этим я использовал событие гиперссылки и click в JQuery, который работал.

Мой код:

Файл PHP

 function add_my_css_and_my_js_files(){ wp_enqueue_script( "ajax-test", plugin_dir_url( __FILE__ ) . '/ajax-test.js', array( 'jquery' ) ); wp_localize_script( 'ajax-test', 'the_ajax_script', array( 'ajaxurl' => admin_url( 'admin-ajax.php' ) ) ); } add_action('wp_enqueue_scripts', "add_my_css_and_my_js_files"); function text_ajax_process_request() { if ( isset( $_POST["post_var"] ) ) { $response = $_POST["post_var"]; echo $response; die(); } } add_action('wp_ajax_test_response', 'text_ajax_process_request'); function include_jQuery() { if (!is_admin()) { wp_enqueue_script('jquery'); } } add_action('init', 'include_jQuery'); add_action( 'init', 'register_shortcodes' ); function register_shortcodes() { add_shortcode( 'displaycalcs', 'mp_calcs_display' ); } function mp_calcs_display() { $output = <<<HTML <form action="" method="post" name="formsubmit" id="formsubmit" > Number of welds: <input type="number" name="numberofwelds" id="numberofwelds" > Number of construction welds: <input type="number" name="numberofconwelds" id="numberofconwelds" > Total one: <input type="text" name="totalone" id="totalone" disabled> <div id="totalfail1"></div> Total two: <input type="text" name="totaltwo" id="totaltwo" disabled> <div id="totalfail2"></div> Total three: <input type="text" name="totalthree" id="totalthree" disabled> <div id="totalfail3"></div> <input type="submit" value="Calculate" id="submit" name="submit" > <div id="result"> </div> </form> HTML; return $output; } 

Ajax-test.js

 jQuery(document).ready( function($) { $("#submit").submit( function() { var data = { action: 'test_response', post_var: 'this will be echoed back' }; $.post(the_ajax_script.ajaxurl, data, function(response) { alert(response); }); return false; }); }); 

Эта ошибка была идентифицирована с помощью stackoverflow – это фактически вызвано программным обеспечением Rapport, инструментом безопасности, рекомендуемым некоторыми банками. Вы можете отключить его / удалить из машин разработки.

Есть много проблем:

Не echo ответы в обратном вызове AJAX. JavaScript должен обработать это.

Чтобы отправить данные в ваш обратный вызов, используйте wp_send_json() или функции более высокого уровня wp_send_json_success() и wp_send_json_error() . Все они die за вас. После этого не нужно exit или die .

Валидация данных и санитария – это то, что вы должны предпринять серьезно: $response = $_POST["post_var"]; чрезвычайно опасный способ делать что-то. Если вас уже взломали, то это была бы открытая дверь. Используйте filter_var() или filter_var_array() , как собственные PHP-функции, так и esc_attr() и аналогичные функции экранирования WordPress.

AJAX и короткие коды – это очень специфическая вещь. По умолчанию запросы AJAX проходят через интерфейс администратора (отсюда admin-ajax.php качестве маршрута обработки). И короткие коды не нужны в пользовательском интерфейсе администратора. Они отображаются во время выполнения, когда содержимое сообщения обрабатывается при циклировании. См. Результаты поиска .