我对AJAX不熟悉,并且很难尝试根据我的需要学习它。 我需要在foreach循环中编写ajax调用。 如果我只是使用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代码:(注意:我使用wordpress的$ 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数组)
我需要通过ajax调用传递2个变量,填充$ remove_option和$ item_id。 触发查询,返回index.php页面。
如何使用ajax实现此目的?我对ajax完全不熟悉,我没有使用WP的插件,只有php脚本。
答案 0 :(得分:0)
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);
}
});
}
答案 1 :(得分:0)
我能用AJAX实现这个目标吗?
是
对我想要实现的目标有更好的方法吗?
如果要将数据从客户端发送到服务器,那么ajax是最好的方法。