Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php foreach循环中的AJAX_Php_Html_Ajax_Wordpress - Fatal编程技术网

Php foreach循环中的AJAX

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

我不熟悉AJAX,为了满足我的需要,我很难学习它。 我需要在foreach循环中编写ajax调用。 如果我只使用PHP调用,即使我不使用onclick事件,它们也会触发。 我基本上做的是从数据库中写出一个列表,并在行中添加一个删除按钮。 单击“删除”链接时,它将触发一个查询,以更新DB for item中的字段

My 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数据库。查询是有效的。没有用户输入,它在管理页面上,所以不要担心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);
      }
  });
}