[英]MVC 5 Ajax request - controller action is not being called
我有* .json文件,其結構如下:
[{ val1: "a1", val2: "b1", val3: "c1"},{ val1: "a2", val2: "b2", val3: "c2"},{ val1: "a3", val2: "b3", val3: "c3"}]
我必須將該數據傳遞到視圖,在該視圖中我有一個接受JSON的數據表。
我創建了Model類:
public class Values {
public string val1 { get; set; }
public string val2 { get; set; }
public string val3 { get; set; }
}
然后在家庭控制器中:
public class HomeController : Controller
{
private string jsonString = File.ReadAllText(@"data.json");
[HttpPost]
public JsonResult SaveTempSelectedPlan(string jsonString)
{
List<Values> vals = new System.Web.Script.Serialization.JavaScriptSerializer().Deserialize<List<Values>>(jsonString);
return Json(vals);
}
}
最后來看:
$(document).ready(function () {
$.ajax({
type: 'POST',
url: '@Url.Action("SaveTempSelectedPlan", "Home")',
dataType: 'json',
data: '[{ "val1" : ' + data.val1 + ', "val2" : ' + data.val2 + ', "val3" : ' + data.val3 '}]',
contentType: 'application/json; charset=utf-8',
success: function (data) {
debugger
alert(data);
var returnJson = data;
}
});
});
因此,此代碼不起作用,未調用控制器動作,無法用JSON填充var returnJson
。 我應該改變什么?
您沒有發送JSON,但是您的jQuery AJAX說它是json。 您的控制器期望一個字符串,每個人都感到困惑,所以要么更改控制器動作,要么更改您的JavaScript以發送文本,您就告訴jQuery它是json,但您的控制器期望字符串。
因此,更改控制器以接受對象,然后將您的js更改為發送json對象:
var dataVar = [{ val1: data.val1, val2: data.val2, val3: data.val3 }];
$.ajax({
type: 'POST',
url: '@Url.Action("SaveTempSelectedPlan", "Home")',
dataType: 'json',
contentType: 'application/json; charset=utf-8',
data: dataVar,
success: function (data) {
debugger
alert(data);
var returnJson = data;
}
控制器:
[HttpPost]
public JsonResult SaveTempSelectedPlan(Values[] vals)
{
....
}
或將您的控制器保持原樣,並更改JavaScript以發送文本而不是json:
$.ajax({
type: 'POST',
url: '@Url.Action("SaveTempSelectedPlan", "Home")',
data: '[{ "val1" : ' + data.val1 + ', "val2" : ' + data.val2 + ', "val3" : ' + data.val3 '}]',
success: function (data) {
debugger
alert(data);
var returnJson = data;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.