【发布时间】:2013-12-20 09:25:59
【问题描述】:
我正在开发一个 ASP.net MVC 4 应用程序,在其中一个页面中,我有一个表单,我正在遍历所有输入并转换为 json 数据。
使用 fiddler、chrome 开发工具和 firebug,我已验证数据已正确转换为 json。我正在使用 $ajax 将数据发布到 mvc 控制器,每次我都会收到错误消息。
我似乎无法弄清楚为什么它不起作用。我敢打赌,如果我能弄清楚如何得到错误消息,我就能弄清楚如何让它工作。当我尝试在控制台中查看时,我没有看到错误消息。我已经尝试将错误消息记录到控制台,但它没有显示任何内容。
如果有人可以帮助我弄清楚如何获取错误消息,我将不胜感激。我还会发布代码,以防我遗漏了一些明显的东西。
这是我的 javascript 代码:
$(function () {
$("#saveform").submit(function () {
var myRows = [];
var $headers = $("th");
var $rows = $("tbody tr").each(function (i, n) {
var $row = $(n);
myRows.push({
id: $row.find('#item_SpecimenId').val(),
site: $row.find('#item_Site').val(),
clinicalImpression: $row.find('#item_ClinicalImpression').val(),
degreeOfSuspicion: $row.find('#item_DegreeOfSuspicion').val(),
margins: $row.find('#item_Margins :selected').text(),
count: $row.find('#item_Count').val(),
lesionSize: $row.find('#item_LesionSize').val(),
});
});
var specimens = JSON.stringify(myRows);
var url = '/PathSlip/DoctorSlip';
$.ajax({
url: url,
data: '{ id:1, post:2 }',
type: 'POST',
dataType: 'json',
statusCode: {
404: function () {
$("#response").html('Could not contact server.');
},
500: function () {
$("#response").html('A server-side error has occurred.');
}
},
success: function () {
$("#response").html('success');
},
error: function (xhr, ajaxOptions, thrownError) {
$("#response").html('an error');
}
});
});
});
这是我在控制器中使用的视图模型
public class SpecimenViewModel
{
public int id { get; set; }
public string site { get; set; }
public string clinicalImpression { get; set; }
public string degreeOfSuspicion { get; set; }
public string margins { get; set; }
public string count { get; set; }
public string lesionSize { get; set; }
}
这是我的 mvc 控制器
public ActionResult DoctorSlip(int id)
{
var specimens = _repo.GetSpecimensByBiopsyId(id).ToList();
return View(specimens);
}
[HttpPost]
public ActionResult DoctorSlip(IEnumerable<SpecimenViewModel> specimens)
{
return RedirectToAction("DoctorSlip");
}
非常感谢任何帮助。
【问题讨论】:
-
真是一团糟。为什么不让 Javascript 函数调用独立函数而不是嵌套函数?然后你可以一一测试,你的代码会更干净。
-
您定义了一个数组,但在您的数据对象中您只是传递了几个数字。你看到了什么,你期待看到什么?
-
你没有传递你的字符串化对象..它期待一个列表..但它只发布一个对象。
-
您是否尝试过 chrome 检查器中的网络选项卡?
-
抱歉,我尝试了很多不同的方法来解决这个问题。我传递了不起作用的样本列表,所以我将其更改为 1 个对象,以确保它不是我传入的数据。在 chrome 检查器网络选项卡中,除了加载我的 javascript、css 和 html页面,我看到一个 302 found 状态代码,用于发布到我的控制器,然后加载页面。
标签: c# javascript asp.net asp.net-mvc-4 jquery