Ahmadz Issa Ahmadz Issa - 6 months ago 18
Ajax Question

How can I loop over form data using serialized (jQuery / Ajax)

I'm trying to get post id and insert it into database after user click on add to favorite button.

The problem that all the post are return id 30 which is the last id in the database.

My php/html code

while($row = mysqli_fetch_array($get_posts)) {
<i style="float:right;" class="fa fa-pinterest-square">
<form id="pin_post" method="post"> ';
if (isset($_SESSION['user_id'])){
<input type="hidden" value="'. $_SESSION['user_id'].'" name="user_id" />
}

<input type="hidden" value="'.$row['post_id'].'" name="post_id[]" />

</form>
</i>


The jQuery / Ajax code

<script>

$(document).on("click",".fa-pinterest-square",function(e) {


$.ajax({
url: "includes/test.php",
type: "POST",
data: $('#pin_post').serialize(),
success: function(data) {
alert(data);
}
});

});
</script>


I'm getting last id in the database when I click any post.

Please help me to get the id of each post when I click on the

Answer

Since you are using #pin_post when serializing it you will get the last hit when jQuery is looking for #pin_post. Either you should use a unique id or something like this

$(document).on("click",".fa-pinterest-square",function(e) {
    var form = $(this).find('form'); //Since the form is child to <i>
    $.ajax({
        url: "includes/test.php",
        type: "POST",
        data: form.serialize(),
        success: function(data) {
            alert(data);
        }
    });
});