1
votes

Ajax ne récupère pas le message php à partir d'un formulaire créé dynamiquement

J'ai créé un ajax qui télécharge une image et la charge dans la page.

Il crée une image avec un bouton X dans le coin supérieur, j'essaie de l'obtenir, alors quand ce bouton est cliqué, je lance un autre code php supprimera l'image correcte et rechargera les images.

Je ne parviens pas à obtenir mon code ajax pour récupérer le code php et je ne sais pas pourquoi.

Tout pointé serait très utile.

J'ai découvert que les élémets créés dynamiquement ne seraient pas ramassés, j'ai donc dû changer mon code ajax en

<?php
if (isset($_POST['deleteimage']) ){
echo('hello');
}?>

donc J'atteins ce point mais il ne récupère toujours pas mon code php et je ne sais pas pourquoi.

Tous les pointeurs seraient très utiles

AJAX JS:

XXX

HTML :

<?php

$imagecount = 0;
            echo ('<div class=row sm>');

            foreach ($getadvertimages as $getadvertimages_row) {
                echo ( '<div class="image-area" >
                <form  id="deleteform'.$getadvertimages_row['image_id'].'" method = "POST" action ="include_advert/advert_new_gun_delete_image.php" >
                <img src="'. $getadvertimages_row['image_src'] . '"  alt="Preview">
                <button  onclick = "" name="deleteimage" id="deleteimage" value="'. $getadvertimages_row['image_id'] . '" class="remove-image" style="display: inline;" >X</button>

                </form>
                </div>');
            }
            echo ('</div>');

advert_new_gun_add_image.inc.php : p >

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script src="include_advert/advert_js/advert_gun_load_save_images.js"></script>
                <div class="bgColor">
                <form id="uploadForm" action="include_advert/advert_new_gun_add_image.inc.php" method="post" class="login-form" enctype="multipart/form-data">
                <div id="targetLayer" class=col> </div>
                <div id="uploadFormLayer">
                <input name="file" type="file" class="inputFile"  /><br/>

                <div class="text-center">
                <input type="submit" name="submit" value="UPLOAD" class="btn btn-common log-btn">
                </div>
                </form>

advert_new_gun_delete_image.php :

$(document).ready(function(){


    $("#uploadForm").on('submit',function(e) {
        e.preventDefault();
        $.ajax({
              url: "include_advert/advert_new_gun_add_image.inc.php",
          type: "POST",
          data:  new FormData(this),
          contentType: false,
          cache: false,
          processData:false,
          success: function(data)
            {
          $("#targetLayer").html(data);
            },
            error: function() 
            {
            }           
          });
      });
    });




      $(document).ready(function(){
        $('button.deleteimage').on('click', function(){
            var image_id = parseInt($(this).parent().attr('id').replace('deleteform', ''));

            console.log(image_id); // You can comment out this. Used for debugging.

            e.preventDefault();
            $.ajax({
                url: "include_advert/advert_new_gun_delete_image.php",
                type: "POST",
                data:  {image_id: image_id},
                contentType: false,
                cache: false,
                processData:false,
                success: function(data)
                {
                    $("#targetLayer"+image_id).html(data); // targetLayer is dynamic and is different for each record
                },
                error: function(xhr, status, error) {
                    alert(xhr.responseText);
                }
            });
        });
    });

J'attends quand je clique sur le bouton de l'image exécutera le fichier advert_new_gun_delete_image.php sans t recharger la page complète


4 commentaires

convertir id = "deleteform" en class = "deleteform" , car id utilisé pour adresser un élément unique tandis que class utilisé pour adresser un groupe d'éléments similaires et dans votre cas, les images sont des éléments similaires


Essayez d'ajouter une barre oblique (/) devant l'URL ou essayez de donner une URL complète pour déclencher un ajax


Avez-vous vérifié la console pour les erreurs? alerte quelque chose en cliquant sur le bouton, pouvez-vous voir l'alerte?


Il n'y a pas d'erreurs, c'est juste en cours d'exécution et en ouvrant advert_new_gun_delete_image.php mais je veux que cela fonctionne sans recharger la page.


3 Réponses :


-1
votes
$("body").on("click", "#deleteform button", function(e){

1 commentaires

Avertissement: - Deprecated> Deprecated 3.0



0
votes
include 'advert_new_gun_save_image_script.inc.php';
include 'advert_new_dropdown_populate/advert_new_gun_image_populate.php';

$imagecount = 0;
echo ('<div class=row sm>');

foreach ($getadvertimages as $getadvertimages_row) {
    echo ( '<div class="image-area" >
    <form  id="deleteform'.$getadvertimages_row['image_id'].'" method = "POST" action ="include_advert/advert_new_gun_delete_image.php" >
    <img src="'. $getadvertimages_row['image_src'] . '"  alt="Preview">
    <button type="button" name="deleteimage" value="" class="remove-image delete-button" style="display: inline;" >X</button>

    </form>
    </div>');
}
echo ('</div>');


2 commentaires

Bonjour @Ghulam, Merci pour votre réponse - J'ai fait les commentaires comme suggéré J'ai modifié ma question en montrant cela. Mais mon code va simplement dans le fichier include_advert / advert_new_gun_delete_image.php et l'ouvre dans le navigateur. C'est ce que j'essaye d'éviter. et idée pourquoi cela se produit?


Il ne touche pas le $ ('button.delete-button'). On ('click', function () {du tout



0
votes

La réponse ci-dessus était presque là mais j'ai dû changer le $ ('button.delete-button'). on ('click', function () { en $ (" body "). on (" click "," #deleteimage ", function (e) {

Et j'ai également supprimé: contentType: false, cache: false, processData: false, code >

Merci Ghulam pour le coup de pouce dans la bonne direction

  $(document).ready(function(){
                $("body").on("click", "#deleteimage", function(e){
                    var image_id = parseInt($(this).parent().attr('id').replace('deleteform', ''));

                    console.log(image_id); // You can comment out this. Used for debugging.

                    e.preventDefault();
                    $.ajax({
                        url: "include_advert/advert_new_gun_delete_image.php",
                        type: "POST",
                        data:  {image_id: image_id },

                        success: function(data)
                        {
                            $('#imageareadiv').hide();
                            $("#targetLayer").html(data); // targetLayer is dynamic and is different for each record
                        },
                        error: function(xhr, status, error) {
                            alert(xhr.responseText);
                        }
                    });
                });
            });


0 commentaires