Я отлаживал это, и контроллер возвращает данные в вызов $ .ajax по какой-то причине данные не возвращаются в функцию $ .ajax.
function UpdateItem() {
var name = $("#UpdateInput").val();
var item = [];
item = { Name: name, Key: updateKey };
if (item.Name != "--Select Item--" && item.Key != "--Select Item--") {
var url = "api/todo/" + item.Key;
$.ajax({
url: url,
data: JSON.stringify(item),
async: false,
type: "PUT",
contentType: "application/json; charset=utf-8"
})
.error(function (jqXHR, textStatus, errorThrown) {
alert(jqXHR + "-" + textStatus + "-" + errorThrown);
})
.done(function() {
$("#UpdateInput").val("");
UpdateItemRow();
})
}
}
function UpdateItemRow() {
var url = "api/todo/" + updateKey;
$.ajax({
url: url,
async: true,
type: 'GET',
contentType: "application/json; charset=utf-8",
success: function (data) {
alert(data.Name);
$("#KeyButton").val(data.Key);
$("#KeyLabel").html(data.Name);
}
})
.error(function (jqXHR, textStatus, errorThrown) {
alert(jqXHR + "-" + textStatus + "-" + errorThrown);
})
}
Контроллер:
[HttpGet("{id}", Name = "GetTodo")]
public IActionResult GetById(string id)
{
var item = TodoItems.Find(id);
if (item == null)
{
return HttpNotFound();
}
return new ObjectResult(item);
}
Извините, вы не можете использовать тот же контроллер для метода PUT и GET. У вас должно быть два разных действия. можете ли вы разместить свой контроллер с помощью метода PUT? –
PUT и GET на одном и том же контроллере WebAPI работают отлично, но, похоже, какая-то проблема вызывает их одно за другим. – Mark