[英]Asp.net MVC 4 Ajax post request not working and I can't figure out why
我正在使用ASP.net MVC 4應用程序,在其中一個頁面中,我有一種形式,可以迭代所有輸入並將其轉換為json數據。
使用提琴手,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');
}
});
});
});
這是我在控制器中使用的viewModel
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");
}
任何幫助,我們將不勝感激。
當我使用$.post
而不是$.ajax
它可以工作,但是我不知道為什么。
我認為您的代碼中有一個問題:
您在“數據”(即“ id,post”)中傳遞單個字段,而您的操作方法則需要SpecimenViewModel
對象的列表。 您應該改為傳遞specimens
對象。
首先,嘗試發送正確的數據,如果問題仍然存在,只需更改POST方法的return this.View();
即可return this.View();
而不是return RedirectToAction("DoctorSlip");
我准備了與您的代碼稍有不同的版本,您可以嘗試:
@using (Html.BeginForm("DoctorSlip","Test",FormMethod.Post,new {id="saveform"}))
{
<!-- your other input controls -->
<input type="button" id="submitForm" value="Save"/>
}
劇本:
<script>
$(function() {
$("#submitForm").click(function () {
var myRows = [];
myRows.push({
id: 1,
site: "abc",
clinicalImpression: "aa",
degreeOfSuspicion: "test",
margins: "24",
count: "12",
lesionSize: "33",
});
myRows.push({
id: 2,
site: "abc2",
clinicalImpression: "aa3",
degreeOfSuspicion: "test2",
margins: "24",
count: "12",
lesionSize: "33",
});
var specimens = JSON.stringify(myRows);
var url = '/Test/DoctorSlip';
$.ajax({
url: url,
data: specimens,
type: 'POST',
dataType: 'json',
statusCode: {
404: function() {
alert('Could not contact server.');
},
500: function() {
alert('A server-side error has occurred.');
}
},
success: function() {
alert('success');
},
error: function (xhr, ajaxOptions, thrownError) {
alert('an error' + thrownError);
}
});
});
});
</script>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.