2016-02-07 58 views
0

我是MVC中的新成員,並試圖創建一個培訓網站。JavaScript POST在連接到MVC控制器時下降

我需要通過JavaScript在我的控制器中調用POST方法。

這是我的JavaScript方法:

function ActivateAddStarAndRoleWithCategories(sender, args) { 
    var discID = $('#DiscID').val(); 
    var starID = $('#StarID').val(); 
    var desc = $("#Description").val(); 

    var strID = ""; 

    $(':checkbox').each(function() { 
     strID += this.checked ? this.id + "," : ""; 
    }); 

    strID = strID.substr(0, strID.length - 1); 

    $.ajax({ 
     type: "POST", 
     url: 'CreateCategoriesID', 
     contentType: "application/json; charset=utf-8", 
     data: { 
      discID: discID, 
      starID: starID, 
      description: desc, 
      catID: strID 
     }, 
     dataType: "json", 
     success: function() { alert("success!"); }, 
     error: function() { alert("Fail!"); } 
    }); 
} 

這是我在控制器方法:

[HttpPost] 
public ActionResult CreateCategoriesID(string discID, string starID, string description, string catID) 
{ 
    entities.AddStarAndRoleAndCategories(int.Parse(starID), description, int.Parse(discID), catID); 

    return Json("OK", JsonRequestBehavior.AllowGet); 
} 

激活JavaScript函數已經連接到所述控制器的視圖。

我總是得到錯誤500 - 服務器迴應的500

我在做什麼錯了一個狀態?

預先感謝您!

+0

添加'jquery'標籤,因爲您正在使用它。編輯:和服務器可能期待'application/x-www-form-urlencoded; 「contentType」中的charset = UTF-8,而不是JSON。這是HTML表單的常用類型。 –

+0

在調試器中,完整的url是什麼? –

+0

嘗試並在調試模式下啓動您的MVC應用程序(http://stackoverflow.com/a/16916600/1134132),並確保獲得您期望的輸入。 – sfs

回答

1

我會去從jQuery docs的例子。

你試過類似......的東西嗎?

$.ajax({ 
    method: "POST", 
    url: "CreateCategoriesID", // Insert your full URL here, that COULD be the problem too 
    // This contentType is the default, so we can just ignore it 
    //contentType: "application/x-www-form-urlencoded; charset=UTF-8", 
    // I would also ignore the dataType unless your backend explicitly sends a JSON response header 
    //dataType: "json", 
    data: { 
     discID: discID, 
     starID: starID, 
     description: desc, 
     catID: strID 
    } 
}).done(function(msg) { 
    alert('Success with message: ' + msg); 
}).fail(function(jqXHR, textStatus) { 
    alert('Failed with status: ' + textStatus); 
});