我正在使用C#和jQuery创建一个简单的MVC4应用程序。在此应用程序中,当用户按下id为SaveCheckboxChanges
的按钮时,我将两个数据阵列发送到服务器。然后,服务器处理数据并将其保存在数据库中。
发生这种情况时,我想按下按钮进行更改。
目前,当用户点击按钮时,按钮文本会更改为'Saving changes'
,这很好,但之后它永远不会改变。
这是因为我在Ajax请求中发送的success
函数从未被调用,只有error
函数被调用,即使没有错误发生,我得到OK
答案
接收请求的控制器:
[HttpPost]
public ActionResult UpdateCheckBoxes(int[] requiresSetupArray, int[] disabledArray)
{
//Do operations with the requiresSetupArray and disabledArray Arrays
DB.SaveChanges();
return Content("OK");
}
起初我认为发生这种情况是因为UpdateCheckBoxes
方法是void
并且没有返回任何内容。但是现在我将其更改为上面的内容,只调用了error
函数。
正在执行的Javascript代码:
$("#SaveCheckboxChanges").click(function (event) {
var button = $("#SaveCheckboxChanges");
if (!button.hasClass("disabled")) {
button.attr('value', 'Saving changes');
var requiresSetupArray = [1, 2];
var disabledArray = [3, 4];
$.ajax({
url: '/Material/UpdateCheckBoxes',
type: 'POST',
contentType: 'application/json; charset=utf-8',
dataType: 'json',
traditional: true,
data: JSON.stringify({ requiresSetupArray: requiresSetupArray, disabledArray: disabledArray }),
success: function (data) {
alert("success " + data);
button.attr('value', 'Save Checkbox Changes');
button.addClass('disabled');
},
error: function () {
alert("error");
}
});
我该如何解决这个问题?
我是否被迫在控制器的方法中返回一些内容来运行success
函数?如果是这样我该怎么办?
答案 0 :(得分:1)
如果你不希望你的方法返回任何内容 - 不要求JSON作为结果:
$.ajax({
url: '/Material/UpdateCheckBoxes',
type: 'POST',
contentType: 'application/json; charset=utf-8',
// dataType: 'json', - remove this line.
traditional: true,
data: JSON.stringify({ requiresSetupArray: requiresSetupArray, disabledArray: disabledArray }),
success: function (data) {
alert("success " + data);
button.attr('value', 'Save Checkbox Changes');
button.addClass('disabled');
},
error: function () {
alert("error");
}
});