【发布时间】:2019-01-16 15:56:43
【问题描述】:
我正在尝试使用Ajax 将记录添加到数据库,如果成功,则从JsonResult 取回数据,以便进一步调用该函数,但不知何故总是陷入错误:parseerror。但是,记录是插入到 DB 中的。
这是我的发帖方法:
$("body").on("click", "#btnAdd", function () {
var txtTermName = $("#txtTermsName");
var txtAlternativeTerms = $("#txtAlternativeTerms");
$.ajax({
type: "POST",
url: "/Administration/AddTerm",
data: '{name: "' + txtTermName.val() + '", alternatives: "' + txtAlternativeTerms.val() + '" }',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (r) {
var row = $("#tblTerms tr:last-child");
if ($("#tblTerms tr:last-child span").eq(0).html() != " ") {
row = row.clone();
}
AppendRow(row, r.Name, r.Alternatives);
txtTermName.val("");
txtAlternativeTerms.val("");
},
error: function(textStatus, errorThrown) {
alert("Error: " + errorThrown);
}
});
});
还有我的控制器JsonResult:
[HttpPost]
public JsonResult AddTerm(Term term)
{
this.SaveTerm(term);
return Json(term);
}
欢迎提出任何意见或建议
更新
Json(term).Data内容:
- Json(term).Data {Models.Term} object {Models.Term}
+ ChangedBy
Description null string
ID 27 int
Inactive false bool
Name "sdfgdsgf" string
SynonymsList "sdfgdsgfdsgsdgf" string
+ Updated {09.08.2018 10:00:50} System.DateTime
【问题讨论】:
-
错误是什么?
-
浏览器网络选项卡告诉 POST 正在返回什么?
-
可能不相关,但这是生成数据的一种丑陋脆弱的方式 - 只需使用
data: { name: txtTermName.val(), alternatives: txtAlternativeTerms.val() }, and remove thecontentType` 选项 -
@tolik 如果你曾经看到过
[object Object],那么它就是浏览器隐藏了它的实际情况(很可能你已经完成了alert(textStatus)或者更糟糕的是alert("textStatus: " + textStatus)。你不能合并带有对象的字符串,所以总是console.log("textStatus", textStatus)(注意逗号,而不是+) -
@mjwills,基本上状态是:
200 OK和term.GetType() = {Name = "Term" FullName = "AppNS.Models.Term"}。如果我这样做Json(term).GetType(),那么显然{Name = "JsonResult" FullName = "System.Web.Mvc.JsonResult"}
标签: c# jquery ajax asp.net-mvc-4