2015-12-23 39 views
0

下載下載在提交

var link = document.createElement("a"); 
link.download = name; 
link.href = uri; 
link.click(); 

工作不在jQuerys爲提交。

但這裏

$('form').submit(function(e) { 
    e.preventDefault(); 

    var uri = $(this).find("input").attr("data-uri"); 
    var name = $(this).find("input").attr("data-name"); 
    alert(uri); // Does work! 

    // This download does not work ... 
    var link = document.createElement("a"); 
    link.download = name; 
    link.href = uri; 
    link.click(); 
    // Download end 

    $.ajax({ 
     url: 'entry.php', 
     type: 'POST', 
     data: $(this).serialize() 
    }); 
}); 

這是行不通的。 uri和名稱是正確的

是否可以在提交後創建元素?

可以做些什麼來使下載工作?

+0

似乎在這裏工作http://codepen.io/anon/pen/jWMOoG – Pabs123

回答

0

.click()是一個事件監聽器。我認爲你正在尋找.trigger('click')

此外,href是錨標記的鏈接引用 - 例如,您要鏈接到的文件。 下載是用於下載的錨標籤的新屬性。在這種情況下,這兩個值應該是一樣的,所以我不確定你爲什麼使用uri和名稱作爲單獨的組件。我已經完整保留在下面,但你可能想考慮這一點。

此外,您正在創建一個<a>元素,但您實際上從未將其添加到DOM。試試這個:

$('form').submit(function(e) { 
    e.preventDefault(); 

    var uri = $(this).find("input").attr("data-uri"); 
    var name = $(this).find("input").attr("data-name"); 
    alert(uri); // Does work! 

    // This download does not work ... 
    var link = document.createElement("a"); 
    link.download = name; 
    link.href = uri; 
    $(document).append(link); // Add your link to the DOM 
    link.trigger('click'); // Trigger the click of your link 
    // Download end 

    $.ajax({ 
     url: 'entry.php', 
     type: 'POST', 
     data: $(this).serialize() 
    }); 
}); 

我也建議尋找到.data()jquery函數來查找您的輸入。