我正在尝试使用ajax中的HTTP POST方法将json数据作为文本发送到我的MVC4项目中的控制器。这是我的ajax代码:
function saveService() {
var data0 = $("#nameInput").val();
var data1 = generateJSON();
var data2 = $("#wellContainer").html();
var jsondataobject = { name: data0, counter: counter, json: data1, html: data2 };
var stringobject = JSON.stringify(jsondataobject);
console.log(stringobject);
console.log(data1);
$.ajax({
type: 'POST',
dataType: 'text',
url: "http://localhost:49162/Admin/SaveNewTemplate",
data: "jsonData=" + stringobject,
success: function (returnPayload) {
console && console.log("request succeeded");
},
error: function (xhr, ajaxOptions, thrownError) {
console && console.log("request failed");
},
processData: false,
async: false
});
}
这是我的控制器方法
[HttpPost]
public void SaveNewTemplate(String jsonData)
{
DataAccessLayer DAL = new DataAccessLayer();
DAL.SaveServiceTemplate(jsonData);
}
这是我在控制台中的错误:
POST http://localhost:49162/Admin/SaveNewTemplate 500 (Internal Server Error)
我的stringobject是一个转换为字符串的正确json对象。如果我用一些随机文本替换ajax函数中的这个变量就行了。
为什么我会收到500错误?
答案 0 :(得分:0)
似乎是发送jsondataobject的问题。所有对象都应该带引号: {" name":data0," counter&#34 ;: counter," json":data1," html":data2}
此外: 数据:" jsonData =" + stringobject, 应该: data:stringobject,
(假设变量计数器正在正确填充,因为代码片段中未提及)