Простейшая форма ajax не работает, когда она должна

Я пытаюсь создать очень простой вызов ajax в области wp-admin, где форма отправляет идентификатор сообщения. Это значение будет использовано для update_post_meta ().

Просто все в порядке? Ну, я был вчера на этой задаче без успеха. Не могли бы вы помочь мне сегодня решить эту проблему, чтобы я мог провести субботнюю ночь в пабе, пил пинту?

JQuery:

jQuery('#submitform').submit(ajaxSubmit); function ajaxSubmit(){ var TheForm = jQuery(this).serialize(); jQuery.ajax({ type:"POST", url: "/wp-admin/admin-ajax.php?action=UpdateMeta", data: TheForm, success:function(data){ // Help, what do I do here to make this work? }); return false; } 

HTML:

 <form action="" method="post" id="submitform" /> <input type="hidden" name="postid" value="<?php echo $post_id; ?>" /> <button type="send" name="submitbtn" id="submitbtn"></button> </form> 

PHP:

 function UpdateMeta(){ $post_id = $_POST["postid"]; update_post_meta($post_id, 'helloworld', $post_id); die(); } add_action('wp_ajax_UpdateMeta', 'UpdateMeta'); add_action('wp_ajax_nopriv_UpdateMeta', 'UpdateMeta'); 

Solutions Collecting From Web of "Простейшая форма ajax не работает, когда она должна"

Я инвестировал некоторое качественное время (и головные боли) с WP ajax, поэтому я понимаю, откуда вы.

Честно говоря, это может быть что угодно: от ошибки в вашем JS-коде или от чего-то совершенно странного, например:

 add_action('wp_ajax_UpdateMeta', 'UpdateMeta'); 

Должно быть изменено на:

 add_action('wp_ajax_updatemeta', 'UpdateMeta'); 

… удалить капиталы, потому что по какой-то причине это вызывало проблему, когда я играл с добавлением действия к wp_ajax .

Для вас будет работать следующее: я просто протестировал его на специальной странице администратора. Обратите внимание, что я добавил div с ответом на класс, если вы хотите вернуть любые данные для тестирования или пользователю.

HTML

  <form action="" method="post" id="submitform" /> <input type="hidden" name="postid" value="<?php echo $post_id; ?>" /> <input type="hidden" name="action" value="updatemeta" /> <button type="send" name="submitbtn" id="submitbtn">submit</button> </form> <div class="feedback"></div> 

PHP

 function updatemeta(){ $post_id = $_POST["postid"]; update_post_meta($post_id, 'helloworld', $post_id); die(); } add_action('wp_ajax_updatemeta', 'updatemeta'); add_action('wp_ajax_nopriv_updatemeta', 'updatemeta'); 

JS

 jQuery('#submitform').submit(ajaxSubmit); function ajaxSubmit(){ var submitform = jQuery(this).serialize(); jQuery.ajax({ type:"POST", url: "/wp-admin/admin-ajax.php", // URL to admin-ajax.php data: submitform, success:function(data){ jQuery(".feedback").html(data); // empty div to show returned data } }); return false; } 

Наслаждайтесь своим пивом. 🙂