Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème sur l'upload d'une image en AJAX

projet en mvc avec php/mysql

Sujet résolu
    17 juin 2021 à 11:51:42

    Bonjour tout le monde !
    Je voudrai que dans ce formulaire, l'admin puisse ajouter un livre, avec diverses informations comme l'image. En AJAX ce serait mieux pour avoir le confort de lecture sans rechargement de la page...mais c'est galère ^^'.
    J'ai mis un console.log dans events.js pour savoir si je récupérais bien le nom du fichier à envoyer, et j'obtiens ces messages d'erreur :
    - Uncaught TypeError: Illegal invocation
    - Uncaught (in promise) TypeError: Failed to execute 'arrayBuffer' on 'Blob': Illegal invocation
    Vous auriez des idées sur la cause ?
    Je continue de chercher de mon côté.
    ///////////////////////////////////////////////////////////////////////////////////////////////////////// admin.phtml
    <h2>Formulaire d'ajout de livre</h2>
    <div id="return"></div>
    <form id="addBook" method="post" enctype="multipart/form-data">
        <fieldset>
            <legend>Métadonnées</legend>
            <label for="title_book">Titre : </label>
            <input type="text" id="title_book" name="title_book")/>
            <label for="author_book">Auteur :</label>
            <input type="text" id="author_book" name="author_book"/>
            <label for="description_book">Description :</label>
            <textarea id="description_book" name="description_book" rows="5" cols="33"></textarea>
            <label for="inStock_book">Quantité :</label>
            <input type="number" min="0" id="inStock_book" name="inStock_book"/>
            <label for="img_book">Image :</label>
            <input type="file" id="img_book" name="img_book"/>
        </fieldset>
        <button type="submit">Ajouter nouveau livre</button>
    </form>
    ///////////////////////////////////////////////////////////////////////////////////////////////////////// main.js
    if(document.getElementById("addBook"))
        {
            document.getElementById("addBook").addEventListener("submit", onSubmitAddBook)
        }
    ///////////////////////////////////////////////////////////////////////////////////////////////////////// events.js
    function onSubmitAddBook(e)
    {
        // stop propagation 
        e.preventDefault()
        // input values
        const title = document.getElementById("title_book").value
        const author = document.getElementById("author_book").value
        const description = document.getElementById("description_book").value
        const inStock = document.getElementById("inStock_book").value
        const img = $('#img_book')[0].files[0];
        console.log($('#img_book')[0].files[0]);
        // ajax request 
        $.post  
        (
            "ajaxPost.php",
            {action: "addBook", title :title, author :author, description :description, inStock :inStock, img :img},
            // response
            function(data) 
            {
                // error messages
                if(data !== "success")
                {
                    $("#return").html(data)
                }
                // new form
                else
                {
                    getOneBookByTitle(title)
                }
            },
        ) 
        // reinitialize form
        document.getElementById("title_book").value = ""
        document.getElementById("author_book").value = ""
        document.getElementById("return").innerHTML = ""
    }

    -
    Edité par TudelCadoret 17 juin 2021 à 14:17:26

    • Partager sur Facebook
    • Partager sur Twitter
      17 juin 2021 à 13:15:48 - Message modéré pour le motif suivant : La demande de l'équipe de modération a été honorée


      Pas d'aide concernant le code par MP, le forum est là pour ça :)

        17 juin 2021 à 14:17:54

        Désolé, c'est corrigé.
        • Partager sur Facebook
        • Partager sur Twitter
          18 juillet 2021 à 13:11:55

          Hello,

          C'est une erreur Jquery courante. utilise $.ajax au lieux de $.post: 

          https://stackoverflow.com/a/35872507/4389768

          P
          our ton cas: 

          // HTML file input, chosen by user
          formData.append("img_book", $('#img_book')[0].files[0]);



          -
          Edité par venom0218 18 juillet 2021 à 13:16:54

          • Partager sur Facebook
          • Partager sur Twitter
          "Skill will accomplish what is denied to force" (Mertvago,1995)
            31 juillet 2021 à 13:54:58

            Bonjour,

            Merci ça marche effectivement ! =)

            Je mets en résolu le topic.

            • Partager sur Facebook
            • Partager sur Twitter

            Problème sur l'upload d'une image en AJAX

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown