моя jquery-форма отправляет, но не отправляет ни одно из значений! - PullRequest
1 голос
/ 28 января 2011

Я пытаюсь сделать что-то вроде плагина, найденного здесь: http://www.filamentgroup.com/lab/jquery_plugin_for_requesting_ajax_like_file_downloads/ делает. Первоначально я просто собирался использовать это, но у меня было много проблем с датами. Так что я подумал, что попробую немного его изменить ...

вот моя версия плагина:

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'), все они имеют значения. но, глядя на сообщение с Fiddler, там ничего не опубликовано. и мой контроллер MVC дает мне ошибки нулевого параметра.

Заранее спасибо за помощь!

EDIT: Я попытался добавить кнопку в форму. вот так:

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

и не отправлять из JavaScript. Если я нажму кнопку, данные также не будут отправлены.

1 Ответ

2 голосов
/ 28 января 2011

Генерируемые вами элементы <input> не имеют атрибута name.Поскольку этот атрибут (не id) используется для идентификации элементов управления при публикации формы, на сервере ничего не отправляется.

Попробуйте что-то вроде:

theForm.append($("<input />").attr("type", "hidden")
    .attr("name", propertyName).val(propertyVal));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...