foreach循环内AJAX(AJAX within a foreach loop)

2019-11-03 07:26发布

我不熟悉AJAX和我有困难的时候试图了解它我需要什么。 我需要写一个foreach循环中的Ajax调用。 如果我只是用PHP呼吁他们甚至会,如果我不使用onclick事件的所有火。 什么IM基本上做的是写出从数据库列表和添加删除按钮行。 点击删除链接时,就会触发一个查询在DB更新领域的项目。

我的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来实现这一目标? 我与阿贾克斯完全陌生,我不使用WP,只有PHP脚本插件。

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


Answer 2:

我可以用AJAX实现这一目标?

有没有什么我想要达到更好的方法吗?

如果你想从客户端发送数据到服务器,然后Ajax是这样做的最佳方式。



文章来源: AJAX within a foreach loop