web-dev-qa-db-fra.com

La balise d'ancrage HTML onclick () et href s'exécutent simultanément

Similaire à lien d'ancrage HTML - href et onclick tous les deux? post, le mien est:

<a href="/tmp/download.mp3" onclick="update();">Download link</a>

La méthode update() enverrait une autre méthode HTTP GET au serveur pour mettre à jour le fichier qui a été téléchargé et mettre à jour la base de données. A partir du code HTML, 2 requêtes GET sont déclenchées ensemble et une seule obtiendra la réponse (la réponse de téléchargement href) du serveur. La update() n'est pas en cours d'exécution. Existe-t-il une méthode permettant d'exécuter les deux méthodes GET? Les suggestions Javascript et Jquery sont les bienvenues!

14
CheeHow

Oubliez le href et faites tout simplement dans la fonction click. Vous pouvez accéder à une autre page une fois la mise à jour terminée. Voici ma suggestion JQuery:

HTML

<a id="download" href="/tmp/download.mp3">Download link</a>

JavaScript (avec JQuery)

$("#download").click(function(e){
    e.preventDefault();//this will prevent the link trying to navigate to another page
    var href = $(this).attr("href");//get the href so we can navigate later

    //do the update

    //when update has finished, navigate to the other page
    window.location = href;
});

REMARQUE: j'ai ajouté une id pour la balise a pour m'assurer qu'elle peut être sélectionnée avec précision via JQuery

23
musefan