【问题标题】:AJAX within a foreach loopforeach 循环中的 AJAX
【发布时间】:2014-10-31 13:25:38
【问题描述】:

我不熟悉 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脚本。

【问题讨论】:

    标签: php html ajax wordpress


    【解决方案1】:

    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
    
    }
    

    Ajax 调用

    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);
          }
      });
    }
    

    【讨论】:

    • add_action() 在做什么?我可以通过 admin_url 函数获取我的 ajax_url 吗?我对几个变量名有点困惑。 admin-ajax.php,是“php 部分”吗?你能进一步详细说明吗?
    • 添加链接以帮助您了解这些功能。
    • 链接没有帮助。我猜我一般不了解 AJAX。我没有使用插件。我正在使用自定义模板。我将我的 ajax PHP 代码放在空白 wp 页面上的单独模板中。我完全遵循了代码,并且在控制台视图中触发了 ajax 调用,但它根本没有做任何事情。
    • stackoverflow.com/a/25706658/3753569 代码不起作用的原因是您需要为函数提供参数。无论如何感谢您的解决方案。
    【解决方案2】:

    我可以使用 AJAX 实现这一点吗?

    是的

    有没有更好的方法来实现我想要实现的目标?

    如果您想将数据从客户端发送到服务器,那么 ajax 是最好的方法。

    【讨论】:

      猜你喜欢
      • 2021-10-05
      • 1970-01-01
      • 2021-05-28
      • 1970-01-01
      • 1970-01-01
      • 2016-09-26
      • 2012-07-19
      • 2013-10-01
      相关资源
      最近更新 更多