jquery - 如何防止ajax get刷新MVC页面

标签 jquery asp.net-mvc razor

这是我的 JavaScript

$.ajax({
    type: 'GET',
    data: {
        _rnd: new Date().getTime()
    },
    url: '@Url.Content("~/Home/RegisterDevice")' + '?name=' + '@Session["username"]' + '&phonenumber=' + $("#phonenumberInput").val() + '&imei=' + $("#imeiInput").val(),
    dataType: 'json',
    async: 'true',
    success: function (data) {
        console.log(data);
        //$("#regdiv").hide();
        //$("#resdiv").append(data);
        //$("#resdiv").show();
        return false;
    }
});

我的 html 有一个触发 javasript 的按钮

<button class="btn btn-success" onclick="RegisterDeviceDetails()">Fortsätt</button>

我的 MVC Controller 有一些逻辑并返回 SUCCESS OR FAIL。

return Json("SUCCESS", JsonRequestBehavior.AllowGet);

我的问题是页面刷新,因此附加响应在刷新时被删除。如何防止刷新?

最佳答案

不要将内联事件处理程序与 jQuery 混合。它将事件注册与事件代码无缘无故地分开,并阻止额外的 jQuery 事件功能工作(多个事件等)

建议向按钮添加 ID 以便于访问:

<button id="register" class="btn btn-success">Fortsätt</button>

然后使用标准 jQuery 事件处理程序:

$('#register').click(function(e){
    e.preventDefault();
    RegisterDeviceDetails();
});

e.preventDefault() 将停止默认按钮行为。

您还可以在此处使用 return false:

$('#register').click(function(e){
    RegisterDeviceDetails();
    return false;
});
jQuery 事件处理程序中的

return falsee.preventDefault()e.stopPropagation() 的作用相同。 .

success 处理程序中的 return false 不执行任何操作,因为该函数实际上返回得更早。它只是启动了一个异步操作。 成功稍后才会被回调。

关于jquery - 如何防止ajax get刷新MVC页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32222149/

相关文章:

asp.net-mvc - Fluent 验证 When 子句

javascript - VS2008 JavaScript 调试器 IE8 "there is no source code available for the current location"

html - 为什么形成丢失的 Bootstrap css?

javascript - 创建退格按钮

javascript - 使用 jquery 更改 anchor 文本和图标

jquery - 在使用 jquery ui 的可调整大小时,除非需要,否则如何 overflow hidden 滚动条?

razor - HandleError 在带有 Razor 的 Asp.net MVC 4 中是否继续工作

javascript - XMLHttpRequest 在 $.ajax 工作的地方给出 CORS 错误

c# - 跨不同 Controller 和 View 重用局部 View (ascx)

JavaScript 不能在 PartialView 上运行