Невозможно подружиться с моим контроллером AJAX и MVC 6.
Так я определяю вызов AJAX для SetFormValues POST-action:
Index.cshtml
$.ajax({
type: "Post",
url: "Home/SetFormValues",
data: { Name: name, Phone: phone },
dataType: "json",
success: function (result) {
SuccessFunction(result)
},
error: function () {
alert("ALARM!");
},
async: false
})
Я вижу, что контроллер работает и выполняет SetFormValues действие, которое определяется следующим образом:
HomeController.cs
[HttpPost]
public JsonResult SetFormValues(string Name, string Phone)
{
string NameErrorStr = string.IsNullOrWhiteSpace(Name) ? "Обязательное поле" : string.Empty;
string PhoneErrorStr = string.IsNullOrWhiteSpace(Phone) ? "Обязательное поле" : string.Empty;
var result = new { NameError = NameErrorStr, PhoneError = PhoneErrorStr };
var jresult = Json(result);
return jresult;
}
Отладчик показывает, что действие выполняется и мой результирующий объект JSON заполняется правильно:
Наконец, вот как SuccessFunction (результат) определяется:
Index.cshtml снова
function SuccessFunction(result) {
alert("Success function shit executed. result=" +
result + "NameError=" +
result.NameError + ". PhoneError=" +
result.PhoneError);
$("#nameerror").append(result.NameError);
$("#phoneerror").append(result.PhoneError);
}
Функция работает, предупреждение выводится, но результат остается «неопределенным» независимо от того, что я делаю:
result = [object Object]
result.val = undefined
Может быть, мне нужно десериализовать результат JSON должным образом или заполнить некоторые свойства в его объявлении выше, я не знаю.
Я использую последние библиотеки для jquery, валидации и ненавязчивости.
Я также попробовал JSON.parse (результат) , как это упоминалось в самой последней спецификации jQuery, но это также не сработало.
Пожалуйста, помогите мне:)