2011-01-28 21 views
1

我試圖做一些像這裏找到的插件: http://www.filamentgroup.com/lab/jquery_plugin_for_requesting_ajax_like_file_downloads/呢。我原本打算使用它,但它在日期上遇到了很多麻煩。所以,我想我會嘗試改變它有點...我的jquery-built表單正在提交,但沒有發送任何值!

這裏是我的版本的插件:

jQuery.download = function (url, data, method) { 
if (url && typeof data == 'object') { 
    //for this version, data needs to be a json object. 
    //loop through the data object.. 

    var theForm = $('<form></form>').attr('action', url).attr('method', method).attr('id', 'jqueryDownloadForm'); 

    $.each(data, function (propertyName, propertyVal) { 

     theForm.append($("<input />").attr('type', 'hidden').attr('id', propertyName).val(propertyVal)); 
    }); 

    theForm.appendTo('body').trigger('submit').remove(); 
} 
else { 
    //they didn't fill in the params. do nothing 
} 

};

,這裏是它如何被稱爲:

var dataToPost = { reportFormatId: reportFormatId, reportPageSizeId: reportPageSizeId, reportSortOrderId: reportSortOrderId, rangeStart: rangeStart, rangeEnd: rangeEnd}; 
$.download('/The/Url/', dataToPost, "POST"); 

它建立在形式和提交。但它不發送任何輸入。

如果我通過theForm.find('input')循環它們都有值。但看着提琴手的帖子,沒有什麼被張貼。和我的mvc控制器給我null參數錯誤。

在此先感謝您的幫助!編輯: 我試着在窗體中添加一個按鈕。像這樣:

theForm.append($("<input />").attr('type', 'submit').attr('id', "ExportForm").val("Export")); 

而不是從JavaScript提交。如果我點擊按鈕,它也不會發送任何數據。

+0

您是否嘗試過將返回在函數的最後假的? – evandrix 2011-01-28 15:34:26

+0

提交後?沒有幫助。當然是 – Patricia 2011-01-28 15:37:59

回答

2

您生成的<input>元素沒有name屬性。由於該屬性(不是id)用於在發佈表單時識別控件,因此實際上沒有任何內容提交給服務器。

試着這麼做:

theForm.append($("<input />").attr("type", "hidden") 
    .attr("name", propertyName).val(propertyVal)); 
相關問題