使用Jquery.Ajax更新数据库时出现问题

时间:2015-05-18 04:15:15

标签: javascript c# jquery ajax asp.net-mvc

我正在网站上工作,并希望能够在单击div时更新数据库表上的字段。我在堆栈上找到了一些示例代码here,但由于某种原因它不起作用,即使它被接受了。我正在使用C#ASP.NET MVC Razor。

我的JavaScript功能如下:

function toggleContent(id, instID) {
    var doc = document.getElementsByClassName("messageContent")[id];
    $(doc).slideToggle();
    $.ajax({
        type: 'POST',
        url: "@Url.Content('/Messages/MarkSeen/')",
        data: {
            instanceID : instID
        },
        dataType: 'json'
    });
}

我的JsonResult如下:

[HttpPost]
public JsonResult MarkSeen(int instanceID)
{
    var markSeen = db.MessageInstances.First(mi => mi.MessageInstanceId == instanceID);
    if (markSeen.RegisteredPerson.PersonId == CurrentUser.PersonId)
    {
        markSeen.Seen = true;
        db.SaveChanges();
        return Json(true);
    }
    return Json(false);
}

1 个答案:

答案 0 :(得分:0)

我不确定你的代码在哪里失败,所以我发布了完整的工作代码 如果您使用的是ApiController,请尝试以下更新以使您的代码正常工作: 1.添加到WebApiConfig.cs的路由

config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{action}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );

2。的JavaScript

$.ajax({
            type: "POST",
            url: "@Url.Content("/api/lab/MarkSeen")",
            data: { "instanceID": instID },
            dataType: 'json',
            success: function (data) { alert(data)},
            error: function () { alert('error'); }
        });

3。添加模型以匹配来自ajax请求的json:

public class labModel
{
    public int instanceID { get; set; }
}

4。控制器:

[System.Web.Mvc.HttpPost]
public JsonResult<bool> MarkSeen(labModel data)
{
    return Json(true);
}