【发布时间】:2015-09-30 11:58:24
【问题描述】:
我多次提出类似的解决方案,这就是为什么我真的很惊讶为什么这个解决方案不起作用。当我点击链接时,这应该通过 jQuery Ajax 向控制器提交数据。但是浏览器只是打开链接。
这里是控制器:
[HttpPost]
public async Task<JsonResult> Hide(int id)
{
MailRepository mailRep = new MailRepository();
var result = await mailRep.HideMail(id);
if (result.Result == Enums.IsSuccess.Succes)
{
return Json(new { IsSuccess = true }, JsonRequestBehavior.AllowGet);
}
else
return Json(new { IsSuccess = false, DataError = result.DataError }, JsonRequestBehavior.AllowGet);
}
这是 Razor 视图:
<a href="@Url.Action("Hide", "Mail", new {id = a.Id})" id="hide" title="hide e-mail" class="btn btn-warning"><i class="glyphicon glyphicon-eye-close"></i></a>
还有 jQuery:
$("#hide").on("click", function () {
$.ajax({
type: "POST",
url: $(this).attr("href"),
dataType: "json",
data: {},
success: function (data) {
if (data.IsSuccess === true) {
$("div.alert-success").removeClass("hidden");
setTimeout(function () {
$("div.alert-success").addClass("hidden");
}, 5000);
window.location.reload();
} else {
$("#error").text(data.DataError);
$("div.alert-warning").removeClass("hidden");
setTimeout(function () {
$("div.alert-warning").addClass("hidden");
}, 5000);
}
},
error: function (request, status, error) {
alert(request.responseText);
}
});
return false;
});
【问题讨论】:
-
响应如何?
-
你的方法有一个参数
int id,但是你没有传递任何东西给它 -
@Jai,我不知道,因为它只是打开的链接,并没有在服务器端触发任何东西。
-
也许有一个语法错误阻止您的处理程序覆盖绑定?检查浏览器的调试器。当您单击链接时,您的处理程序是否会被调用?如果不是,那么它首先没有绑定到元素,并且与 AJAX 代码无关。 可能是在页面上存在元素之前尝试绑定处理程序一样简单,但我们无法从显示的代码中知道。
-
@andrey.shedko:然后活页夹没有绑定到元素。您是否尝试在页面上存在之前绑定元素?
标签: javascript jquery asp.net ajax asp.net-mvc