我正在使用visual studio 2013,MVC4和C#做一個簡單的應用程序。這個網絡應用程序有一個包含多個複選框的表格和一個默認情況下已升級的更新按鈕。當點擊一個或多個複選框時,激活按鈕。單擊按鈕時運行控制器方法MVC4 C#
這裏的想法是,當單擊「更新」按鈕並將這些更改保存在數據庫中時,將複選框的所有信息(哪些是打開或關閉)發送到服務器。
爲了實現這一點,我試圖通過jquery使用ajax,但不幸我沒有成功,因爲當我點擊按鈕時什麼都沒有發生。
這是cshtml
文件,我用它來生成客戶端的觀點:
<input type="submit" value="Save Checkbox Changes" class="btn btn-primary disabled" id="SaveCheckboxChanges" />
<table class="table">
<tr>
<th>
@Html.DisplayNameFor(model => model.RequiresSetup)
</th>
<th>
@Html.DisplayNameFor(model => model.Disabled)
</th>
</tr>
@{
foreach (var item in Model)
{
<tr>
<td>
@Html.EditorFor(modelItem => item.RequiresSetup)
</td>
<td>
@Html.EditorFor(modelItem => item.Disabled)
</td>
</tr>
}
}
</table>
的JavaScript代碼,我有按鈕SaveCheckboxChanges
如下:
$("#SaveCheckboxChanges").click(function (event) {
if (!$("#SaveCheckboxChanges").hasClass("disabled")) {
$.ajax({
url: '/Material/UpdateCheckBoxes',
type: 'POST',
data: {bla: "bdsjdnjsdnsnd"
},
contentType: 'application/json; charset=utf-8',
success: function (data) {
alert(data.success);
},
error: function() {
alert("error");
}
});
}
});
而且在我的材料控制器,我有以下幾種:
[HttpPost]
public ActionResult UpdateCheckBoxes(string bla)
{
return Content("Working!" + bla);
}
我期望的是,點擊按鈕後,頁面顯示「Working」字符串,表示控制器中的功能正確執行。
但是,這並沒有發生,我看到的只是javascript錯誤提示。
如何使這個Ajax請求工作?我錯過了什麼?
在Fiddler或DevTools中查看網絡事務時是否獲得404或500? – beauXjames 2014-11-06 16:49:18
我收到500內部服務器錯誤! – 2014-11-06 17:15:01
是啊......這意味着你實際上擊中了你的控制器,但是有一個問題......並且沒有data.success來提醒......調試從ajax調用返回的數據對象 – beauXjames 2014-11-06 17:21:49