2015-08-26 53 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得到很久以後叫回來。