Jquery 使用ajaxpost编辑数据

Jquery 使用ajaxpost编辑数据,jquery,ajax,Jquery,Ajax,我尝试更改表单中的数据,然后保存。不是更改而是添加一条记录 这是我的剧本: $('#UpdateObject').click(function () { var ObjnameEntered = $("#NameOB")[0].value; var BasenameEntered = $("#selbaseID")[0].value; var idsave = $("#labelobID")[0].value; var kaartX = $("#mapx")[0

我尝试更改表单中的数据,然后保存。不是更改而是添加一条记录

这是我的剧本:

$('#UpdateObject').click(function () {

    var ObjnameEntered = $("#NameOB")[0].value;
    var BasenameEntered = $("#selbaseID")[0].value;
    var idsave = $("#labelobID")[0].value;
    var kaartX = $("#mapx")[0].value;
    var kaartY = $("#mapy")[0].value;
    var picture = $("#trainpicname")[0].value;
      $.ajax({
        url: '/api/Traininglocation/' + idsave +'/',
        type: 'POST',
        contentType: 'application/json; charset=utf-8',
        data: JSON.stringify({ TrainLocationName: ObjnameEntered, TrainBaseID: BasenameEntered, TrainXcoord: kaartX, TrainYcoord: kaartY, TrainPicture: picture }),
        dataType: 'json',
        success: $('#doebam').show()
    });
});
控制员: 我使用了put方法,然后在发布我的项目后,我得到了一个405错误

服务器软管上出现错误: 活动代码:4005 事件消息:请求的表单身份验证失败。原因:提供的票证无效。 活动时间:2-12-2013 16:21:56 事件时间(UTC):2-12-2013 15:21:56 事件ID:817A99288076466699D3D2EF795AE478D 事件顺序:2 事件发生率:1 活动详情代码:50201

//放置api/培训位置/5

    public HttpResponseMessage PutTrainLocation(int id, TrainLocation trainlocation)
    {
        if (ModelState.IsValid && id == trainlocation.id_trainlocation)
        {
            db.TrainLocation.Attach(trainlocation);
            db.ObjectStateManager.ChangeObjectState(trainlocation, EntityState.Modified);

            try
            {
                db.SaveChanges();
            }
            catch (DbUpdateConcurrencyException)
            {
                return Request.CreateResponse(HttpStatusCode.NotFound);
            }

            return Request.CreateResponse(HttpStatusCode.OK);
        }
        else
        {
            return Request.CreateResponse(HttpStatusCode.BadRequest);
        }
    }

    // POST api/Traininglocation
    public HttpResponseMessage PostTrainLocation(TrainLocation trainlocation)
    {
        if (ModelState.IsValid)
        {
            db.TrainLocation.AddObject(trainlocation);
            db.SaveChanges();

            HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.Created, trainlocation);
            response.Headers.Location = new Uri(Url.Link("DefaultApi", new { id = trainlocation.id_trainlocation }));
            return response;
        }
        else
        {
            return Request.CreateResponse(HttpStatusCode.BadRequest);
        }
    }
谁能帮我?

我换了控制器: 从列车位置到列车后位置。 谢谢你的回复

    public HttpResponseMessage PostTrainLocation(int id, TrainLocation trainlocation)
    {
        if (ModelState.IsValid && id == trainlocation.id_trainlocation)
        {
            db.TrainLocation.Attach(trainlocation);
            db.ObjectStateManager.ChangeObjectState(trainlocation, EntityState.Modified);

            try
            {
                db.SaveChanges();
            }
            catch (DbUpdateConcurrencyException)
            {
                return Request.CreateResponse(HttpStatusCode.NotFound);
            }

            return Request.CreateResponse(HttpStatusCode.OK);
        }
        else
        {
            return Request.CreateResponse(HttpStatusCode.BadRequest);
        }
    }

如果它在数据库中添加了一条与javascript无关的记录,那就是您在服务器上处理请求的方式。我会怀疑
idsave
是空的,或者处理
/api/Traininglocation/{id}
的任何东西都有错误。