У меня есть следующий вызов Ajax, который указывает на функцию контроллера:
<script type="text/javascript">
$(document).ready(function () {
$('#AddNote').click(function () {
$('#AddNote').addClass("disabled");
var txtNote = document.getElementById('note');
var result = document.getElementById('result');
result.innerText = "Adding note...";
$.ajax({
url: "@Url.Action("AddNoteAsync", "Leads")",
type: "POST",
data: { leadId: @Model.Id, note: txtNote.value },
async: true,
success: function (data) {
// removed
},
});
});
});
</script>
Когда я нажимаю кнопку AddNote
, я вижу сообщение «Добавление заметки ...», и больше ничего не происходит. Когда я проверяю консоль в Chrome, она гласит:
:44309/Leads/AddNoteAsync:1 - Failed to load resource: the server responded with a status of 400 ()
Итак, я знаю, что 400 означает плохой запрос, но я не уверен, почему это происходит. Я пробовал:
- Добавлены кавычки в поля "leadId" и "note" в данных - без разницы.
- Добавлены окна предупреждений, чтобы показать значения @ Model.Id и txtNote.value перед вызовом AJAX, чтобы убедиться, что они верны - они есть.
- Установите точку останова в функции
AddNoteAsync
в моем контроллере - она никогда не срабатывает
- Жестко закодировал поле URL в
/Leads/AddNoteAsync
- без разницы
Так как функция контроллера никогда не срабатывает, я предполагаю, что с частью &.ajax
что-то не так, но я не могу понять, что.
Редактировать: Метод контроллера:
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> AddNoteAsync(int? leadId, string note)
{
ViewData["AddedNote"] = false;
if (leadId == null)
{
return RedirectToAction("Index", new { initials = User.Identity.Name });
}
var lead = await _context.Leads.FirstOrDefaultAsync(m => m.Id == leadId);
if (lead == null)
{
return RedirectToAction("Index", new { initials = User.Identity.Name });
}
var ownsLead = await LeadBelongsToCurrentUser(leadId.Value, User.Identity.Name);
if (!ownsLead)
{
return RedirectToAction("Index", new { initials = User.Identity.Name });
}
_context.LeadNotes.Add(new LeadNoteModel()
{
LeadId = leadId.Value,
Note = note,
NoteDate = DateTime.Now
});
await _context.SaveChangesAsync();
ViewData["AddedNote"] = true;
return Content("Success");
}