2015-08-26 17 views
1

拿到这是我的javascript如何防止AJAX从清凉的MVC

$.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控制器有一些逻辑,并返回成功或失败... 。

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

我的问题是页面刷新,所以附加的响应作为其刷新被删除。我如何防止刷新?

+1

返回虚假RegisterDeviceDetails方法或的preventDefault,改变按钮输入类型=按钮 – MstfAsan

回答

3

不要使用jQuery混联事件处理程序。它分隔事件代码事件注册没有很好的理由,并从工作(多个事件等)

建议增加一个id您轻松访问按钮停止额外的jQuery事件功能:

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

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

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

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

您还可以使用回到这里假:在jQuery的事件处理程序

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

return false不一样e.preventDefault()e.stopPropagation()

return falsesuccess处理程序内不执行任何操作的函数实际上返回的要早得多。它只是开始一个异步操作。 success得到很久以后叫回来。