我尝试将ajax调用($ .post)中的“常规”参数类型从视图传递给应该接收这些参数以及List>的控制器。
我需要此列表,因为这些参数将与model.types不同,并且控制器中的方法将开关案例中的所有参数分配给私有方法。
我尝试了几个jquery对象构建,JSON.stringify,在字符串中带有索引的数组(我知道我无法明确命名列...这是我的问题的一部分),该字符串始终以List结尾,在后端方法。
“参数”在xhr调试中可见,但是参数_options始终为空(引用控制器方法)。
这是我的var和ajax调用:
(Library[] objArray, Library inputlib)
Firefox调试器中的xhd参数:
function initDocumentsPreviewsActions() {
$('.documents-list-preview-action').on('click', function () {
if (xhrPreviewLoad != undefined)
xhrPreviewLoad.abort();
$('#documents-preview').html('<div class="general-form-message-loader"></div>');
documentCurrentIndex = $(this).data('btnindex');
setDatatableRowActive();
var documentType = $(this).data('documenttype');
var adherentRessourceId = $(this).data('adherentressourceid');
var annee = $(this).data('annee');
var echeancier = $(this).data('echeancier');
var destinataireid = $(this).data('destinataireid');
var destinatairetypeid = $(this).data('destinatairetypeid');
var emetteurid = $(this).data('emetteurid');
var emetteurmandatid = $(this).data('emetteurmandatid');
var trimestres = $(this).data('trimestres');
var params = [
{ '_annee': '' + annee + '', '_echeancier': '' + echeancier + '', '_trimestres': '' + trimestres + '' }
];
xhrPreviewLoad = $.ajax({
url: '/Documents/PreviewDocumentSingle',
data: {
_documentType: documentType,
_adherentRessourceId: adherentRessourceId,
_annee: annee,
_destinataireId: destinataireid,
_destinataireType: destinatairetypeid,
_emetteurId: emetteurid,
_emetteurMandatId: emetteurmandatid,
_echeancier: echeancier,
_options: JSON.stringify(params)
},
dataType: 'json',
type: 'POST'
}).done(function (documentPartialView) {
$('#documents-preview').html('<img src="' + documentPartialView.src + '"/>');
xhrPreviewLoad = undefined;
});
});
}
控制器方法:
_documentType AppelCotisation
_adherentRessourceId 836
_annee 2018
_destinataireId 11
_destinataireType Syndicat
_emetteurId 16289
_emetteurMandatId 5986
_echeancier False
_options [{"_annee":"2018","_echeancier":"False","_trimestres":"undefined"}]
很久以前我已经做过,但是我不能把手或大脑放在上面。我敢肯定这是小事。
我希望正确获取所有参数,或者建议在后端(以及如何在前面将其形式化)声明另一个不同类型的List或Array ...好吧……任何帮助都来了
但是我真的很想将音乐保持在后端。
答案 0 :(得分:0)
我终于发现自己如何通过在控制器的方法参数中更改为Dictionnaray而不是List>来解决此简单问题,并构建一个像这样的简单js对象:
var options = {};
options['_annee'] = annee;
options['_echeancier'] = echeancier;
options['_trimestres'] = trimestres;