2013-10-08 21 views
12

Benzer HTML anchor link - href and onclick both? yazılan yürütmek, bana ait:Html bağlantı etiketi onclick() ve href eşzamanlı

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

sunucuya başka bir HTTP GET yöntemini göndereceğini update() yöntem indirilip güncelleme edildiği dosya güncellemek için veritabanı. HTML kodundan, birlikte tetiklenen 2 GET isteği vardır ve yalnızca ONE yanıtı (href indirme yanıtı) sunucudan alır. update() yürütülemiyor. Her iki GET yönteminin yürütülmesini sağlayabilecek bir yöntem var mı? Javascript ve Jquery önerileri memnuniyetle karşılıyor!

+0

Sanırım işlevselliği bozmak zorunda kalacaksınız. Ben href kurtulmak ve veritabanına update() çağrı yazma sonra dosya indirmek için bir pencere pop var öneriyoruz. – Snowburnt

+0

, update() işlevinizde bir gecikmeyle çalışabilir, setTimeout (function() {}) –

+0

First 'click' ve sonra' href' komutunu kullanabilirsiniz. Bu varsayılan davranış –

cevap

22

href'u unutun ve tüm bunları tıklama işlevinde yapın. Güncelleme tamamlandıktan sonra başka bir sayfaya gidebilirsiniz.

HTML (JQuery ile)

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

JavaScript

$("#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; 
}); 

NOT: İşte benim JQuery öneridir ben JQuery aracılığıyla doğru seçilebilir sağlamak için a etiket için bir id eklenen

+4

dan kontrol ederseniz sadece 1 yanıt almak, sonra 'window.location' güncelleştirmek için 'this.href' kullanmak olay işleyicide. Sayfa başına birden fazla indirme bağlantısı varsa (oldukça olası), kimlik seçici yerine bir sınıf kullanmaya geçmek daha kolaydır ve JavaScript etkin olmayan herkes için (kısmi) işlevsellik sağlar. –

+0

@AnthonyGrist: İyi not, bunu – musefan

+0

@AnthonyGrist'te düzenleyeceğim: "update" kodu bir geri arama ile yapılmışsa da, "this" orijinal anlamını kaybedebilir: Tekrar güncellenir – musefan