1
votes

Pas de demande de publication ajax lors de la soumission du formulaire via jquery

J'essaie d'envoyer mon formulaire au serveur. J'ai utilisé pug pour créer mon formulaire, puis je le soumets via ajax. J'ai écrit un journal de console de test pour voir si le formulaire est soumis et si le message n'est pas enregistré. Qu'est-ce qui ne va pas?

Cependant, tout ce que j'ai saisi sur le formulaire apparaît dans l'url après?. Aussi, pourquoi aucune demande de publication n'est-elle effectuée?

Mon formulaire: -

    $(document).ready( function () {
    getAllProducts();

    $('#newProductForm').submit( function(e) {
        e.preventDefault();
        let arr = $(this).serializeArray();
        console.log("Form values: "+ arr);

        $.post({
            url: '/admin/add',
            type: 'POST',
        }).done( response => {
            resetProductTable();
            console.log("Admin add is being requested!")
        })
    })
})

Mon code JS pour soumettre le formulaire: -

form(id="newProductForm")
            p
                label(for="title") Product Title:
                input(type="text" name="title" id="title" placeholder="Product Title" required autofocus)
            p
                label(for="description") Product Description:
                input(type="text" name="description" id="description" placeholder="Product Description" required autofocus)
            p
                label(for="Price") Price: 
                input(type="price" name="price" id="price" placeholder="Set Price" required autofocus)
            p
                label(for="Price") Shipping Charges: 
                input(type="text" name="shippingCharge" id="shippingCharge" placeholder="Set Shipping Charges" required autofocus)
            p
                label(for="Price") Shipping Time: 
                input(type="text" name="shippingTime" id="shippingTime" placeholder="Set Shipping Time" required autofocus)
            p
                label(for="quantity") Total Quantity: 
                input(type="text" name="quantity" id="quantity" placeholder="Set Total Quantity" required autofocus)
            p
                label(for="tags") Tags (Seperated by comma): 
                input(type="text" name="tags" id="tags" placeholder="Set Price" required autofocus)
            //Add drag and drop image upload feature soon

            p
                button(type="submit" id="addProductButton") Add New product


3 commentaires

Vous voulez dire que votre fonction est appelée par la poste n'est pas demandée? Et que voyez-vous dans l'onglet réseau de la console développeur?


Il n'y a rien sur la console


Cependant, je peux voir les données que j'ai entrées enregistrées dans la zone URL. J'ai un comportement étrange


3 Réponses :


1
votes

Votre bouton d'envoi est défini comme

p
  input(type="submit" id="addProductButton") Add New product

et je pense qu'il devrait être un , que vous pourrait être stylé comme un bouton à votre goût:

p
  button(type="submit" id="addProductButton") Add New product


1 commentaires

ajoutez également e.preventDefault () en haut de votre fonction.



3
votes

Je pense que votre formulaire ne se soumet pas, non? Vous pouvez utiliser cette méthode, je pense que votre problème devrait être de le résoudre.

$(document).submit('#newProductForm'', function (e) {
)}


2 commentaires

Ça a marché. Merci beaucoup! Puis-je savoir ce qui causait le problème?


Oui, bien sûr, nous soumettons le formulaire mais chargeons en fait notre document. document signifie la page entière, vous comprenez?



1
votes

changez l'événement de soumission de déclenchement en

$(document).on('click', '#addProductButton', ()={
...
}):

cet événement lie directement avec le bouton sumbit à la place.


0 commentaires