Javascript AJAX使用$(this)

时间:2017-06-20 11:11:54

标签: jquery html

我有一个问题,如何使用$(this)方法获取poke的输入值。 $(" #pke")工作var counter = parseInt($("#poke").val());但是我需要使用$(this),因为我在表单中有while循环 JS:

$(document).ready(function () {
    $('form').on('submit', function (e) {
        e.preventDefault();
        $.ajax({
            type: "post",
            data: $(this).serialize(),
            url: "index2.php",
            success: function (data) {
                var counter = parseInt($("#poke").val());
                counter++;
                $("#poke").val(counter);
                $("#submit").text(counter);
                alert("form was submited");
            }
        });
        return false;
    });
});

HTML:

<?php
                $result = $mysqli->query("SELECT * FROM users") or die($mysqli->error);
                while ($users = $result->fetch_assoc()) {
                    ?>
                    <form class="table" name="table" id="table" method="post" enctype="multipart/form-data" autocomplete="off">
                        <div class="Table-row" id="table">
                            <div class="Table-row-item" data-header="Header1"><input class="clear" type="text" name="first_name" id="first_name" value="<?php echo $users['first_name'] ?>"></div>
                            <div class="Table-row-item" data-header="Header2"><input class="clear" type="text" name="last_name" id="last_name" value="<?php echo $users['last_name'] ?>"></div>
                            <div class="Table-row-item" data-header="Header3"><input class="clear" type="text" name="email" id="email" value="<?php echo $users['email'] ?>"></div>
                            <div class="Table-row-item" data-header="Header4"><input class="clear" type="text" name="poke" id="poke" value="<?php echo $users['poke']?>"></div>
                            <div class="Table-row-item" data-header="Header5"><input class="poke" type="submit" value="Poke" id="submit" name="submit"></div>
                            <input class="clear" type="hidden" id="hidden_<?php echo $users['id']?>" name="hidden" value="<?php echo $users['id']?>">
                        </div>
                    </form>
                                    <?php 
                                  } ?>

2 个答案:

答案 0 :(得分:0)

您可以在ajax查询中设置此上下文。试试这种方式:

$.ajax({
... 
context:this, 
...
});

然后$(this)应该是form而不是ajax请求

答案 1 :(得分:0)

你的问题并没有表明使用循环的逻辑; 然而,要循环遍历表单中的所有输入,您可以像这样使用:

$('#formId input[type="text"]').each(function(){
        // Do your magic here
});

参考:https://stackoverflow.com/a/10322919/7735285

更新:您更新的HTML显示HTML上方的PHP循环可能会创建具有相同ID的多个元素,这是错误的。