我在使用AJAX向控制器发布多个参数时遇到了一些问题。两个参数都以null结尾,无法找出原因。我正在尝试从名为“cat_fam_codes”和“cat_codes”的两个下拉列表中发送选定的值
更新:我添加了下面列出的内容类型和数据类型。同样的问题:传递给控制器的两个参数都是空的。
在视图中:
$('#cat_fam_codes').click(function () {
var categoryData = {
categoryFamilyCodes: $('#cat_fam_codes').val(),
categoryCodes: $('#cat_codes').val()
};
$.ajax({
type: 'POST',
contentType: "application/json; charset=utf-8",
dataType: "json",
url: '/EventReport/GetCCRCodes/',
data: JSON.stringify(categoryData),
success: function (jsonresults) {
if (jsonresults != null) {
$('#ccr_codes').find('option').remove().end();
for (var i = 0; i < jsonresults.length; i++) {
$('#ccr_codes').append('<option value="' + jsonresults[i].CCRCodeId + '">' + jsonresults[i].Description + '</option>');
}
}
},
error: function (xhr, status, error) {
alert('Failed to retrieve CCR Codes for this list. A "' + error + '" response was returned.');
}
});
});
在控制器中:
[HttpPost]
public ActionResult GetCCRCodes(string categoryFamilyCodes, string categoryCodes)
{ ... }
传递给控制器的两个参数都为null。非常感谢任何协助。
谢谢!
答案 0 :(得分:2)
我会采取更简单的方法。假设你在html表单中有那些DropDownLists
$.post("/EventReport/GetCCRCodes/", $("form").serialize());
答案 1 :(得分:2)
使用Fiddler或类似工具检查通过$ .ajax()调用返回控制器的内容。 $ .ajax可能不会以JsonValueProviderFactory
可以反序列化的形式发送数据。当我通过$ .ajax发布JSON时,我总是明确指定以下选项:
contentType: "application/json; charset=utf-8",
dataType: "json",