我有一个 MVC5 View ,在这个 View 中我有:
@using (Html.BeginForm("MyAction", "MyController", FormMethod.Post))
{
// My controls
<input type="submit" id="btnSubmit" class="btn btn-primary" value="Submit" />
}
我想要的是在发布到 Controller 之前进行 ajax 调用检查记录计数。
如果记录数很高,我想留在 View 上并提示用户。
一切似乎都正常,但 View 仍在发布到 MyAction。我本来期望“返回 false;”为了防止这种情况发生。
为什么“return false”没有停止向 Controller 发送消息?
$("#btnSubmit").click(function (e) {
var p1= $("#Value1").val();
var p2= $("#Value2").val();
$.ajax({
type: "GET",
url: "/MyController/GetRecordCount",
data: { "param1": p1, "param2": p2 },
async: false
}).done(function (recCount) {
if (recCount> 999)
{
$(".showAdditionalInfo").show();
return false;
}
}).fail(function (xhr, status, err) {
alert(xhr.responseText);
});
});
最佳答案
您的返回应该在点击处理程序本身内。现在它位于 AJAX 回调内部。
应该是这样的:
$("#btnSubmit").click(function (e) {
e.preventDefault();
var p1= $("#Value1").val();
var p2= $("#Value2").val();
var doPost = true;
$.ajax({
type: "GET",
url: "/MyController/GetRecordCount",
data: { "param1": p1, "param2": p2 },
async: false
}).done(function (recCount) {
if (recCount> 999)
{
$(".showAdditionalInfo").show();
doPost = false;
}
}).fail(function (xhr, status, err) {
alert(xhr.responseText);
});
return doPost;
});
这假设 ajax 请求不是异步的。一旦是这样,这就不应该再起作用了。
关于javascript - "return false"不停止回发到 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39496147/