Php 使用Ajax删除数据库行只会删除第一行,而不是所选行

Php 使用Ajax删除数据库行只会删除第一行,而不是所选行,php,jquery,mysql,ajax,Php,Jquery,Mysql,Ajax,我使用下面的代码在数据库行中循环并显示信息。每个表单都有一个删除按钮,可以从数据库中删除该行: function show_scheduled_tweets () { global $wpdb; $query = "SELECT * FROM wp_tweettweet"; $results = $wpdb->get_results($query, ARRAY_A); foreach($results as $result) { $twee

我使用下面的代码在数据库行中循环并显示信息。每个表单都有一个删除按钮,可以从数据库中删除该行:

function show_scheduled_tweets () {
    global $wpdb;
    $query = "SELECT * FROM wp_tweettweet";
    $results = $wpdb->get_results($query, ARRAY_A);

    foreach($results as $result) {
        $tweet2 =  $result[text];
        $recycleOption = $result[recycle];
        $id = $result[id];
    ?>

        <form id="tweet-<?php echo $id; ?>" class="tweetclass form-inline" action="" method="post">
            <div class="checkbox">
                <label>
                    <input type="checkbox" name="recycle" <?php if($recycleOption == 1){ echo "checked";} ?>>Recycle Tweet?
                </label>
            </div>
            <div class="form-group"><input class="form-control" type="text" name="tweet" value="<?php echo $tweet2; ?>"></div>
            <div class="form-group"><input class="form-control" type="text" name="tweetdate"></div>
            <input type="hidden" name="id" value="<?php echo $id; ?>">
            <div class="form-group"><input class="form-control" type="text" name="timepicker" class="timepicker"/></div>
            <input class="tweetsubmit" type="submit" value="Save">
            <input class="tweetdelete" type="submit" value="delete">
        </form>
    <?php
    }
}
show_scheduled_tweets();

假设我有五行不同的数据显示。现在无论我点击哪个删除按钮,最上面的一行都会被删除。换句话说,如果我单击第3行的删除按钮,第一行将被删除

根据当前代码返回第一个元素的值。检查:

获取匹配元素集中第一个元素的当前值,或设置每个匹配元素的值


您需要根据单击的元素获取
id
值,请使用

var id = jQuery(this).prevAll('input[name="id"]').val();
var id = jQuery(this).closest('form').find('input[name="id"]').val();

方法

var id = jQuery(this).siblings('input[name="id"]').val();

或使用(或)和

var id = jQuery(this).prevAll('input[name="id"]').val();
var id = jQuery(this).closest('form').find('input[name="id"]').val();

根据当前代码,返回第一个元素的值。检查:

获取匹配元素集中第一个元素的当前值,或设置每个匹配元素的值


您需要根据单击的元素获取
id
值,请使用

var id = jQuery(this).prevAll('input[name="id"]').val();
var id = jQuery(this).closest('form').find('input[name="id"]').val();

方法

var id = jQuery(this).siblings('input[name="id"]').val();

或使用(或)和

var id = jQuery(this).prevAll('input[name="id"]').val();
var id = jQuery(this).closest('form').find('input[name="id"]').val();

你在美国的选择对于公司的tweet来说并不特殊。传递给JS函数的事件将附带一个目标(即单击的按钮),如果您将$id回显到该按钮的数据属性中,则目标中可访问的相关id:

<input data-id="<?php echo $id;?>" class="tweetdelete" type="submit" value="delete">

你在美国的选择对于公司的tweet来说并不特殊。传递给JS函数的事件将附带一个目标(即单击的按钮),如果您将$id回显到该按钮的数据属性中,则目标中可访问的相关id:

<input data-id="<?php echo $id;?>" class="tweetdelete" type="submit" value="delete">

啊,好的,我明白了。因为,当前的方法是只选择表单列表中的第一个id,对吗?@user715564:yes
val()
从选择器返回第一个元素的值。因为,当前的方法只是选择表单列表中的第一个id,对吗?@user715564:yes
val()
返回选择器中第一个元素的值。您没有发布删除查询。您没有发布删除查询。