2011-01-28 51 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)); 
相关问题