我正在使用Jquery Ajax来调用控制器中的方法,但我总是得到无效的json原语错误。
以下是代码。
客户端代码
$("#something >li").each(function () {
widgetsobj.push({
WidgetId: $(this).attr("dbid"),
ColumnNumber: 2,
RowNumber: 3,
WidgetType: "Graph",
WidgetName: "ddd",
PageName : "Page1"
});
});
$.ajax({
url: "/Home/ABC",
dataType: "json",
type: "POST",
contentType: "application/json; charset=utf-8",
data: { pagename1: pagename, widgetsobj1: JSON.stringify(widgetsobj) },
success: function (data) {
alert("ss");
},
error: function (data) {
debugger;
}
});
在控制器
[HttpPost, ValidateInput(false)]
public JsonResult ABC(string pagename1, List<XYZ> widgetsobj1)
{
// do something
}
注意XYZ是具有以下属性的对象。
WidgetId
ColumnNumber
RowNumber
WidgetType
WidgetName
PageName
所以,请让我知道我错在哪里。
答案 0 :(得分:0)
关于ajax的事情是,你发送的内容非常挑剔。你需要确保一切都是正确的格式。
即。你使用双引号(“)而不是单引号(')等等。
最好的办法是使用Firebug或类似的控制台在执行时查看POST,或者在发送之前使用alert()
查看POST数据。这样你就可以确定问题所在。
请记住,当您使用json.stringify()
时,它会将您提供的内容转换为它认为可接受的JSON字符串,因为它只是一个字符串,任何时候都可能出现语法错误!
从我在这里看到的内容可能存在以下问题:
data: { pagename1: pagename, widgetsobj1: JSON.stringify(widgetsobj) }
您可能想尝试:
data: { "pagename1": pagename, "widgetsobj1": JSON.stringify(widgetsobj) }
答案 1 :(得分:0)
我得到了同样的错误。我的解决方案是添加:
dataType: 'json',
到ajax电话。看起来你已经在你的ajax电话中有了这个。但希望这有助于其他人。