Я пытаюсь отправить данные json как текст с помощью метода HTTP POST в ajax для контроллера в моем проекте 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)
Мой строковый объект - это правильный объект json, преобразованный в строку. Если я заменил эту переменную в ajax-функции некоторым случайным текстом, она будет работать.
Почему я получаю ошибку 500?
Кажется, проблема связана с отправкой jsondataobject. Все объекты должны быть заключены в кавычки: {"name": data0, "counter": counter, "json": data1, "html": data2}
Также: данные: "jsonData =" + stringobject, должны быть: data: stringobject,
(предполагая, что переменный счетчик заполняется правильно, так как он не упоминается в фрагменте кода)