Intereting Posts
Какой метод в конечном итоге вызывает: do_action_ref_array ('parse_query', array (& $ this)); WooCommerce – отображает вложенный список всех подкатегорий в файле archive-product.php wp_insert_post позволяют пользователям отправлять сообщения без регистрации … Переписать правила и сохранить URL-адрес Разработка плагина WordPress. Когда звонят наши функции плагина? Ошибка js на странице редактирования сообщений Как установить новый флажок установки флажка по умолчанию, как отмечено Как остановить WordPress от смены эллипсиса на предварительно сформированный трехзначный глиф? Поиск лучшего способа обработки сценария ajax, который извлекает данные после нажатия на клик WordPress для вопросов и ответов Показать случайную запись на странице с постоянной позицией по URL-адресу Сравните два числовых пользовательских поля Доступ к данным из базы данных / таблицы без WP в содержимом страницы Фильтр Главная страница Сообщения в Buddypress Виджет боковой панели: случайный выбор текста из заданного набора

Заменить ссылку с формой для передачи переменных в javascript / ajax

Я отправляю одну переменную в javascript / ajax по ссылке, но хочу отправить ее через форму, чтобы я мог также передавать пользовательский ввод. (Это для плагина, который взаимодействует с скриптом python Echonest Remix для создания аудиоредактирования). Короткий вопрос: как я могу получить это в WP ajax javascript:

<form id="receive_me" method="POST"> Username: <input type="text" name="user_variable"> <input type="hidden" name="generated_var" value="'.$arguments.'"> <input type="submit" value="Submit"> </form> 

JS:

 function glitch_player_display(generated_var) { jQuery.ajax({ type: 'POST', url: ajaxglitch_playerajax.ajaxurl, data: { action: 'ajaxglitch_player_ajaxhandler', mix_name: mix_name }, success: function(data, textStatus, XMLHttpRequest) { var showglitchplayer = '#showglitchplayer'; jQuery(showglitchplayer).html(''); jQuery(showglitchplayer).append(data); }, error: function(MLHttpRequest, textStatus, errorThrown) { alert(errorThrown); } }); } 

Это PHP-поток:

 function glitch_player_show_make_mix(){ $result = ""; $generated_var = wp_create_nonce("ajaxloadpost_nonce"); $arguments = "'".$nonce."'"; $link = ' <div id="make_button"><a onclick="glitch_player_display('.$arguments.');">'. "Link Title" .'</a></div>'; $result .= '<h3>' . $link . '</h3>'; $result .= '<div id="showglitchplayer">'; $result .= '</div>'; $result .= '<div id="play_button"><a title="The Title" href="'.plugin_URL.$generated_var.'.mp3">First Mix</a></div>'; return $result; } add_action( 'wp_ajax_nopriv_ajaxglitch_player_ajaxhandler', 'ajaxglitch_player_ajaxhandler' ); add_action( 'wp_ajax_ajaxglitch_player_ajaxhandler', 'ajaxglitch_player_ajaxhandler' ); function ajaxglitch_player_ajaxhandler(){ $generated_var = isset( $_POST['generated_var'] )? $_POST['generated_var'] : false; error_log( "The generated_var is $generated_var" ); // write it to the error_log too.) 

Но я не уверен, как получить POST для javascript. Что-то в этом роде?

 $('#inputForm').submit(function glitch_player_display(mix_name) 

Мне не нужен второй скрипт php? Я буду благодарен за то, что дальше (или вообще) в правильном направлении.

Спасибо и оставайся хорошо.

ОТВЕТ: На основании ввода ниже, здесь ОДИН ИЗ ПУТИ, чтобы отправить переменную через форму:

 <form id="form_id" name="form" method="post"> Field Title: <input type="text" id="user_input" size = 2> <input type="hidden" id="mix_name" value="'.$arguments.'"> <input id="btn-submit" type="submit" onclick="glitch_player_display()" value="Submit"> </form> 

И вот JS / jQuery

 function glitch_player_display() { user_input = document.getElementById("user_input").value ? document.getElementById("user_input").value : 2; generated_var = document.getElementById("generated_var").value ? document.getElementById("generated_var").value : "Default_Var"; $(document).on('submit', '#form_id', function(event){ event.preventDefault(); }); jQuery.ajax({ beforeSend: function() { alert(generated_var + " in ajax user_input: " + user_input); }, type: 'POST', url: ajaxglitch_playerajax.ajaxurl, data: { action: 'ajaxglitch_player_ajaxhandler', generated_var: generated_var, user_input: user_input }, success: function(data, textStatus, XMLHttpRequest) {play_button var showglitchplayer = '#showglitchplayer'; jQuery(showglitchplayer).html(''); jQuery(showglitchplayer).append(data); }, error: function(MLHttpRequest, textStatus, errorThrown) { alert(errorThrown); } }); } 

Обратите внимание, что мы не отправляем переменные в функцию js glitch_player_display() поскольку мы были в первом случае. Мы собираем его в JS-функции с помощью document.getElementById("user_input").value . Также

 beforeSend: function() { alert(generated_var + " in ajax user_input: " + user_input); }, 

Это всего лишь способ проверить и увидеть, что фактически получает функция jQuery.ajax . И поскольку мы на самом деле не вызываем другой скрипт с помощью кнопки отправки, необходимо вызвать

 $(document).on('submit', '#form_id', function(event){ event.preventDefault(); }); 

Итак, jQuery (или JS?) Не думает, что он должен найти другой скрипт и сгенерировать ошибку, которая в этом случае заменила user_variable на [object Object]. Объект можно просмотреть с помощью console_log() и я думаю, что это был огромный объект ошибки.

Выработал ответ с помощью входа с форума, не ориентированного на WP, и отредактировал его выше.

Короче говоря, переменные были получены из WITHIN функции js с использованием getElementByID и предотвратили ошибку в форме без действия с event.preventDefault();

вот так:

 function glitch_player_display() { user_input = document.getElementById("user_input").value ? document.getElementById("user_input").value : 2; generated_var = document.getElementById("generated_var").value ? document.getElementById("generated_var").value : "Default_Var"; $(document).on('submit', '#form_id', function(event){ event.preventDefault(); });//etc...