ajax调用时内部服务器错误500

时间:2014-05-06 11:17:41

标签: jquery ajax asp.net-mvc

我试图调用此方法:

// POST: /Manufacturer/Delete/5
[HttpPost, ActionName("Delete")]
public ActionResult DeleteConfirmed(int id)
{
    Manufacturer manufacturer = unitOfWork.manufacturerRepository.GetByID(id);
    unitOfWork.manufacturerRepository.Delete(manufacturer);
    unitOfWork.Save();
    return Json(new { ok = true, newurl = Url.Action("Index", "Manufacturer") });
}

用这个ajax:

$.ajax({
            url: "/Manufacturer/Delete/" + $('#Id').val(),
            type: "POST",
            contentType: "application/json; charset=utf-8",
            headers: {
                'RequestVerificationToken': '@TokenHeaderValue()'
            },
            data: { id: $('#Id').val() },
            error: function (data) {
                alert("error" + data);
            },
            success: function (data) {
                if (data.ok)
                {
                    $("#Modal").modal('hide');
                }
                else {
                    $('.modal-body').html(data);
                }
            }
        })

我签了fiddler我可以看到ID正确传递。我把断点放在方法的开头,但它没有被击中。之前打电话崩溃。 我该怎么做才能找到造成这次崩溃的原因?

来自fiddler的数据:

POST http://localhost:1809/Manufacturer/Delete/34 HTTP/1.1
Host: localhost:1809
Connection: keep-alive
Content-Length: 5
Accept: */*
RequestVerificationToken: TQY9NrchHlFT6IBaTv1R4daiwGoRH0yv3gHJwpatGj
Origin: http://localhost:1809
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.131 Safari/537.36
Content-Type: application/json; charset=UTF-8
Referer: http://localhost:1809/Admin/Index
Accept-Encoding: gzip,deflate,sdch
Accept-Language: pl-PL,pl;q=0.8,en-US;q=0.6,en;q=0.4
Cookie: __RequestVerificationToken=r5YwV-v

id=34

2 个答案:

答案 0 :(得分:3)

POST Url中删除内容。在GET请求中使用了Url.Id.但是如果要在ajax调用的数据部分中使用POST Json.stringify()

$.ajax({
        url: "/Manufacturer/Delete",
        type: "POST",
        contentType: "application/json; charset=utf-8",
        headers: {
            'RequestVerificationToken': '@TokenHeaderValue()'
        },
        data: JSON.stringify({ id: $('#Id').val() }),
        error: function (data) {
            alert("error" + data);
        },
        success: function (data) {
            if (data.ok)
            {
                $("#Modal").modal('hide');
            }
            else {
                $('.modal-body').html(data);
            }
        }
    })

答案 1 :(得分:1)

尝试从帖子网址中删除ID。这样它将它传递给正确的方法,id可以绑定到发布的数据“id”

$.ajax({
            url: "/Manufacturer/Delete/"
            .......

传递id时,它应该是一个JSON字符串,我们可以在这里使用 JSON.stringify(value [,replacer [,space]])

  

data:JSON.stringify({id:$('#Id')。val()})

如果需要,您也可以使用XML并通过以下方式将其解析为字符串:

  

(new XMLSerializer())。serializeToString(xml);