簡體   English   中英

Ajax調用返回內部500錯誤

[英]Ajax call returns internal 500 error

嗨,我正在嘗試執行對服務器的Ajax調用,但我似乎沒有運氣,我一直在控制台上返回錯誤500 Internal server error。這是我的Ajax調用:

    $("body").on("click", "#ok", function (e) {
    var id = $(this).attr("data-bookid");
    $.ajax({
        url: "/ProductEditor/DeleteBook",
        type:"POST",
        data: { bookId: parseInt(id) },
        success: function (data) {
            console.log(data);
        },
        error: function (data) {
            console.log(data);
        }
    });
    e.preventDefault();
})

這是我要調用的C#代碼:

public ActionResult DeleteBook(int bookId)
{
   bookRepository.DeleteBook(bookId);
   return RedirectToAction("Books", "ProductManager");
}

在嘗試調試時,我注意到甚至沒有調用DeleteBook方法。

我究竟做錯了什么?

編輯我添加了[HttpPost]屬性,但仍然無法正常工作

沒有更多信息,很難告訴您您做錯了什么。

但是,jQuery ajax函數的error函數回調具有三個參數:

(jqXHR,textStatus,errorThrown)

$.ajax({
    url: "/ProductEditor/DeleteBook",
    type:"POST",
    data: { bookId: parseInt(id) },
    success: function (data) {
        console.log(data);
    },
    error: function (jqXHR, textStatus, errorThrown) {
        console.log(errorThrown);
    }
});

第三個參數errorThrown將具有對/ProductEditor/DeleteBook的調用的HTTP響應文本。 我建議查看一下errorThrown顯示的內容,以及可能在調試模式下運行整個程序。

也許var id = $(this).attr("data-bookid"); 是不正確的,並且id的值被設置為undefined

另外,您可以使用IE或Chrome中的F12開發工具中的“網絡”選項卡,Firefox中的Firebug或Fiddler來調試ajax調用。 您可以查看正在發送到服務器的ajax請求以及來自服務器的響應,以查看是否以正確的格式(JSON)發送了正確的數據( bookId )以及來自服務器的響應是什么

將HttpPost添加到您的方法並嘗試

[HttpPost]
public ActionResult DeleteBook(int bookId)
{
   bookRepository.DeleteBook(bookId);
   return RedirectToAction("Books", "ProductManager");
}

您的WebMethod必須是靜態的

[WebMethod(true)]
public static ActionResult DeleteBook(int bookId) 
{    
     bookRepository.DeleteBook(bookId);    
     return RedirectToAction("Books", "ProductManager"); 
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM