2011-11-14 47 views
1

我使用使用tutorialzine優秀的jQuery的Filedrop [weixiyen]和我卡在嘗試發送動態POST變量的問題,解釋如下:如何自定義JQuery Filedrop發送動態發佈數據變量?

我有一個HTML表單選擇下拉( photo_tab_index),用戶可以選擇一個幻燈片數字(比如1-5),然後選擇一個Dropbox畫布,用戶可以將他們的照片放到上傳到Web服務器上。

在filedrop的javascript我有以下:

$(function(){ 
    var dropbox = $('#dropbox'), 
    message = $('.message', dropbox); 

    var slideshow = document.getElementById('photo_tab_index').value; 

    dropbox.filedrop({ 
    // The name of the $_FILES entry: 
    paramname:'pic', 
    data: { 
     param1: slideshow,   // send POST variables 
    }, 
    ... 

    // Called before each upload is started 
    beforeEach: function(file){ 
     if(!file.type.match(/^image\//)){ 
     alert('Only images are allowed!'); 
     return false; 
     } 
    }, 
    ... 

我的問題是JavaScript讀取photo_tab_index的值時,它呈現頁面(並因此總是發送爲「1」)但我真正想要的是它可以讀取照片放在下拉框上的幻燈片下拉值。在我有限的JQuery知識中,我有一種感覺,我想更新beforeEach:函數中的dropbox.filedata「data:param1」字段,但我不知道如何引用它?

+0

DOH!我想我可能找到了回頭看原始使用示例的答案。您可以指定 data:{ param1:'value1', param2:function(){ return calculated_data; //在上傳時計算數據 }, }, 但是calculate_data從哪裏來?這是一個類似beforeEach的函數嗎? – Darrell

+0

是的,事實上,得到它......所以改變param1爲一個函數(),然後在大括號內調用「var slideshow = document.getElementById('photo_tab_index')value;」 ...完美。對不起,浪費時間,但寫出來的過程會清除大腦。 – Darrell

回答

8

因此得出結論爲那些有同樣的問題,你可以使用例如參數2功能,在上傳的點來計算POST變量,所以:

data: { 
    param2: function(){ 
     var slideshow = document.getElementById('photo_tab_index').value;  
     return slideshow; // calculate data at time of upload,   
    },  
}, 
+0

它絕對不是時間浪費..你只是幫助我與這..我基本上做同樣的事情,你..讓用戶從下拉列表中選擇一個畫廊,並上傳照片到它.. –

+0

天才!太棒了!巡迴演出! –

0

優秀。它幫助我們很多。是的,要做出正確的動態數據值,你需要做的是附加一個新的函數並返回你想要的值。非常感謝。