Intereting Posts
Пользовательский тип почтового архива, организованный по категориям Я хочу обработать следующие js для обработки запроса AJAX на моей функции, чтобы вычислить общее количество просмотров сообщения Пользовательский файл скрипта имеет «? Ver = 4.5.1» при загрузке и не обновляет Пользовательский тег Cloud Cloud отсутствует теги Как я могу позволить пользователю нажимать клавишу ввода без создания нового элемента в редакторе? URL-адрес блога при использовании index.php в виде блога и front-page.php в качестве главной страницы Удалить панель приветствия из контактной формы 7 страница Добавление значений meta в permalink Включение специального типа сообщений в виджет Архивы Тема WordPress MultiSite Передача meta_query или author__in в запрос Jetpack Infinite Scroll Комментарий «Ответ» не работает, если комментарии загружаются из ajax Получить название меню внутри ходока Память необходима для размещения 200 сайтов WordPress? Сортировка сообщений по пользовательским полям в meta_query

Заменить ссылку с формой для передачи переменных в 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() и я думаю, что это был огромный объект ошибки.

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

Выработал ответ с помощью входа с форума, не ориентированного на 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...