我的动作是没有收到其中一个AJAX参数,有谁知道为什么?
AJAX
$('#formLista').submit(function (e) {
e.preventDefault();
if ($(this).validate()) {
$.ajax({
url: '@Url.Action("CriarListaAcesso")',
type: 'POST',
dataType: 'JSON',
data: $(this).serialize() + '&idLista=@ViewBag.codLista',
success: function (obj) {
if (obj.success == true) {
alert('Acesso definido com sucesso');
$('#fecharAcLista').click();
}
else {
alert('### ocorreu um erro ao definir o acesso ###');
}
}
}).always(function () {
});
}
});
动作
//I receive the model of the form, but not the idLista string
public ActionResult CriarListaAcesso(UsuarioLista usrListas, string idLista)
{
}
ViewBag.codLista具有表示对象id的字符串。
尝试对Id进行硬编码,仍然接收空字符串
$.ajax({
url: '@Url.Action("CriarListaAcesso")',
type: 'POST',
data: {usrListas: $(this).serialize() , idLista : '1234'},
success: function (obj) {
if (obj.success == true) {
alert('Acesso definido com sucesso');
$('#fecharAcLista').click();
}
else {
alert('### ocorreu um erro ao definir o acesso ###');
}
}
});
答案 0 :(得分:1)
我创建了一个变通方法,将字符串传递给我的模型的一个属性:
<input type="text" hidden name="codLista" value="@ViewBag.codLista">
所以我的ajax调用看起来像这样
$('#formLista').submit(function (e) {
e.preventDefault();
if ($(this).validate()) {
$.ajax({
url: '@Url.Action("CriarListaAcesso")',
type: 'POST',
dataType: 'JSON',
data: $(this).serialize(),
success: function (obj) {
if (obj.success == true) {
alert('Acesso definido com sucesso');
$('#fecharAcLista').click();
}
else {
alert('### ocorreu um erro ao definir o acesso ###');
}
}
}).always(function () {
});
}
});
答案 1 :(得分:0)
你可以做这样的事情
var v=$("form").serialize();
v=v.replace("=",":").replace("&",",");
然后将其包装在json括号中
data:{v},...
希望这有帮助
答案 2 :(得分:0)
你可以创建新的数组元素并附加到序列化数据
var data = $(this).serializeArray();
data.push({name: 'idLista', value: @ViewBag.codLista});
或将您的表单类型从post转到