Я пытаюсь выполнить пользовательское действие AJAX в WordPress, но оно не работает. У меня есть следующий вид:WordPress AJAX вызов не выполняется PHP
<form method='post' name='form-bid-<?php echo get_the_ID() ?>' class="bid-form">
<input type='submit' name='<?php echo get_the_ID()?>' value='Licitar' class='bidvalue'>
<?php wp_nonce_field('ajax-bid-nonce', $post->ID); ?>
</form>
форма этот путь, потому что он генерируется внутри цикла, по одному для каждого сообщения на сайте, поэтому использовать идентификатор поста в качестве уникального имени для входа.
Затем я захвачу форма представить на обычае JavaScript файла:
jQuery(document).ready(function($) {
// Perform AJAX bid on form submit
$('form.bid-form').on('submit', function(e) {
var action = 'ajaxbid';
var auction_id = e.target.name.substring('form-bid-'.length);
var security_container = "#".concat(auction_id);
var security = $(security_container).val();
$.ajax({
type: 'POST',
dataType: 'json',
url: ajax_bid_object.ajaxurl,
data: {
'action': action,
'id': auction_id,
'security': security
},
success: function(data) {
console.log(data);
}
});
e.preventDefault();
});
});
Эта часть работает, и печатает 0 на консоли после успеха.
Наконец, у меня есть PHP файл, в котором я зарегистрировать скрипт и иметь функцию Я хочу призвать формы представления:
function ajax_bid_init() {
wp_register_script('ajax-bid-script', get_template_directory_uri() .'/js/ajax-bid-script.js', array('jquery'));
wp_enqueue_script('ajax-bid-script');
wp_localize_script('ajax-bid-script', 'ajax_bid_object', array(
'ajaxurl' => admin_url('admin-ajax.php')
));
// Enable the user with no privileges to run ajax_bid() in AJAX
add_action('wp_ajax_nopriv_ajaxbid', 'ajax_bid');
}
add_action('init', 'ajax_bid_init');
function ajax_bid() {
// First check the nonce, if it fails the function will break
check_ajax_referer('ajax-bid-nonce', 'security');
echo json_encode(array('message'=>__('SUCCESS')));
die();
}
На данный момент, все, что я хотел функция вернуть этот массив и отобразите его на консоли. Однако код, кажется, не проходит здесь, и ответ AJAX всегда равен 0.
Я сделал совершенно аналогичный подход как для входа в систему, так и для регистрации на веб-сайте, и они оба работают. Я сравнивал три бесконечных раза, и я не могу найти то, что мне здесь не хватает.
Попробуйте проверить вкладку «Сеть» для подсказок: http://stackoverflow.com/a/21617685/2191572 – MonkeyZeus
Что такое 'ajax_bid_object.ajaxurl' Я не вижу его в рамках' jQuery (document) .ready (function ($) {/ * Я не вижу его здесь :(* /}); ' – MonkeyZeus
Вкладка« Сеть »показывает все, что работает нормально, и данные формы содержат именно то, что я хочу.« ajax_bid_object »- это имя переменная, которая содержит данные скрипта (см. [link] (https://codex.wordpress.org/Function_Reference/wp_localize_script)). –