Php foreach循环中的AJAX
我不熟悉AJAX,为了满足我的需要,我很难学习它。 我需要在foreach循环中编写ajax调用。 如果我只使用PHP调用,即使我不使用onclick事件,它们也会触发。 我基本上做的是从数据库中写出一个列表,并在行中添加一个删除按钮。 单击“删除”链接时,它将触发一个查询,以更新DB for item中的字段 My index.php文件Php foreach循环中的AJAX,php,html,ajax,wordpress,Php,Html,Ajax,Wordpress,我不熟悉AJAX,为了满足我的需要,我很难学习它。 我需要在foreach循环中编写ajax调用。 如果我只使用PHP调用,即使我不使用onclick事件,它们也会触发。 我基本上做的是从数据库中写出一个列表,并在行中添加一个删除按钮。 单击“删除”链接时,它将触发一个查询,以更新DB for item中的字段 My index.php文件 <?php foreach ($items as $item) : ?> <tr> <td><?php e
<?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数据库。查询是有效的。没有用户输入,它在管理页面上,所以不要担心prepare()或其他注入防御。)
(前面在index.php页面中填充了$remove_选项,$item_id来自$items数组)
我需要通过ajax调用传递2个变量,填充$remove\u选项和$item\u id。
启动查询,返回index.php页面
如何使用ajax实现这一点?我对ajax完全不熟悉,我不使用WP插件,只使用php脚本。php部分
Ajax调用
我可以用AJAX实现这一点吗
对
有没有更好的方法来实现我的目标
如果要将数据从客户端发送到服务器,那么ajax是最好的方法。添加操作()的作用是什么?我可以通过admin\u url函数获取我的ajax\u url吗?我对几个变量名有点困惑。admin-ajax.php,这是“php部分”吗?你能进一步解释一下吗?添加了一些链接来帮助你理解这些功能。这些链接没有帮助。我想我不太懂AJAX。我没有使用插件。我使用自定义模板。我将ajax PHP代码放在一个单独的模板中,放在一个空白的wp页面上。我完全按照代码进行了操作,在console视图中启动了ajax调用,但它根本不起任何作用。代码不起作用的原因是您需要为函数提供参数。不管怎样,谢谢你的解决方案。
<?php
$wpdb->query("UPDATE " . $wpdb->prefix."item
SET is_removed =" . $remove_option . "
WHERE item_id =" . $item_id );
?>
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
}
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);
}
});
}