Я не знаком с AJAX, и мне сложно успеть узнать, что мне нужно. Мне нужно написать вызовы ajax в цикле foreach. если я просто использую вызовы PHP, они все будут работать, даже если я не использую событие onclick. То, что в основном делает, заключается в выписывании списка из БД и добавлении кнопки удаления в строку. при щелчке ссылки удаления, он будет запускать запрос для обновления поля в БД для элемента.
Мой файл index.php
<?php foreach ($items as $item) : ?> <tr> <td><?php echo $item['item_name']; ?></td> <td><a href="#" onclick="ajax call(arguments)" ></a></td> </tr> <?php endforeach; ?>
Мой PHP-код: (примечание: я использую Wordpp $ wpdb для запроса базы данных WP. Запрос действителен. Пользователь не вводит пользователя, а его на странице администратора не беспокоит подготовка () или другие средства защиты от инъекций.)
<?php $wpdb->query("UPDATE " . $wpdb->prefix."item SET is_removed =" . $remove_option . " WHERE item_id =" . $item_id ); ?>
($ remove_option заселяется ранее на странице index.php, а $ item_id – из массива $ items)
Мне нужно передать 2 переменные через вызов ajax, заполнить $ remove_option и $ item_id. запустите запрос, вернитесь на страницу index.php.
Как использовать ajax для этого? Я совершенно не знаком с ajax, и я не использую плагин для WP, только скрипты php.
http://codex.wordpress.org/Plugin_API/Action_Reference/wp_ajax_(action)
add_action('wp_ajax_update_this', 'update_this_func'); add_action('wp_ajax_nopriv_update_this', 'update_this_func'); function update_this_func(){ $remove_option = $_POST['remove_option']; $item_id = $_POST['item_id']; global $wpdb; $wpdb->query("UPDATE " . $wpdb->prefix."item SET is_removed =" . $remove_option . " WHERE item_id =" . $item_id ); return json_encode(['status' => 'Updated!']); // return status as json }
http://codex.wordpress.org/AJAX_in_Plugins
function onClickingThis(rem_opt,itemid){ $.ajax({ url: ajax_url, // You can get this from admin_url('admin-ajax.php') function type: 'POST', data: {action: 'update_this', remove_option: rem_opt, item_id: itemid }, dataType: 'json', success: function(response){ console.log(response); } }); }
могу ли я добиться этого с помощью AJAX?
да
есть ли лучший подход к тому, чего я пытаюсь достичь?
Если вы хотите отправить данные от клиента на сервер, тогда ajax – лучший способ сделать это.