$ .ajax无法从控制器接收数据

时间:2015-12-29 07:43:07

标签: javascript jquery asp.net ajax

我已经调试了这个,并且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);
    }

3 个答案:

答案 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中的一个错误。这是一个模糊的答案,但如果您遇到此问题,您可以尝试所有建议的解决方案。很抱歉没有提供准确答案。 ))