我已经调试了这个,并且Controller正在将数据返回到$ .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);
}
答案 0 :(得分:0)
尝试删除
[HttpGet("{id}", Name = "GetTodo")]
从您的行动中提出
[HttpGet]
答案 1 :(得分:0)
这是PUT控制器:
[HttpPut("{id}")]
public IActionResult Update(string id, [FromBody] TodoItem item)
{
if (item == null || item.Key != id)
{
return HttpBadRequest();
}
var todo = TodoItems.Find(id);
if (todo == null)
{
return HttpNotFound();
}
TodoItems.Update(item);
return new NoContentResult();
}
答案 2 :(得分:0)
我发现在$ .ajax调用中将缓存设置为false
cache: false
我也在使用Visual Studio 2015 Release Candidate,并且存在更改端口已解决的错误。所以它可能是Visual Studio或IIS中的一个错误。这是一个模糊的答案,但如果您遇到此问题,您可以尝试所有建议的解决方案。很抱歉没有提供准确答案。 ))