在foreach循环中的AJAX

时间:2014-09-06 22:35:08

标签: php html ajax wordpress wpdb

我对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脚本。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

  

我能用AJAX实现这个目标吗?

  

对我想要实现的目标有更好的方法吗?

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