我注意到,當頁面上的鏈接有JS onclick函數和一個MVC動作方法時,JS函數在動作之前觸發。爲什麼JavaScript功能在.NET動作之前觸發?
想知道這總是如此嗎?
爲什麼瀏覽器希望運行JS和後端方法?
我可以先運行後端方法,但仍然想要啓動JS函數嗎?
問候
我注意到,當頁面上的鏈接有JS onclick函數和一個MVC動作方法時,JS函數在動作之前觸發。爲什麼JavaScript功能在.NET動作之前觸發?
想知道這總是如此嗎?
爲什麼瀏覽器希望運行JS和後端方法?
我可以先運行後端方法,但仍然想要啓動JS函數嗎?
問候
爲什麼/瀏覽器如何deside運行JS和後端的方法?
request
返回response
。 HTTP適用於Request
和Response
體系結構。基本上客戶端發出請求以獲得響應(即結果或期望的數據)無論你做什麼postback or return true
到服務器,它都會執行服務器端方法。
<a href='#' onclick="return SomeFunction();">ClickHereToSee</a>
回到這裏它是由函數返回,如果返回真值將轉至服務器的方法,如果返回的錯誤會阻止默認動作值。
我可以先運行後端方法,但仍然想要啓動JS函數嗎?
你可以。使用Ajax。基本上Ajax請求是XMLHTTPRequest。用於更新部分部分。
非常感謝@Ravi – Xavier 2013-02-15 11:03:11
想知道這總是如此嗎?
爲什麼瀏覽器希望運行JS和後端方法?
客戶端JavaScript運行在客戶端,頁面內。服務器端.NET代碼在服務器上運行並生成一個HTML文檔(或其他資源)。
要運行服務器端代碼,瀏覽器必須發出HTTP請求。
發出HTTP請求的最簡單方法是離開當前頁面並從服務器加載一個新頁面(通過鏈接或提交表單)。
由於客戶端JavaScript在網頁上運行,不能在瀏覽器已經離開它運行的頁面之後運行。
我可以先運行後端方法,但還是要火JS功能?
您可以從JavaScript(在執行其他JS操作之前)發出HTTP請求,而不是離開當前頁面。這通常通過the XMLHttpRequest
object完成,並稱爲Ajax。
非常有幫助!謝謝 – Xavier 2013-02-15 11:02:23
Can I run backend method first, but still want to fire the JS function?
前兩個答案早已回答。對於第三個,你可以嘗試jQuery的Ajax-
function SomeFunction(){
$.ajax({
type: 'POST',
url: "@Url.Content("Controller/ActionResult")",
data : {
*yourparameter:value* //data
},
dataType: 'json',
success:function(result)
{
//javascript stuff
}
});
}
<a href='#' onclick="return SomeFunction();">ClickHereToSee</a>
太棒了!非常感謝 – Xavier 2013-02-15 11:02:53
調用一個jQuery AJAX功能上的onclick事件,並做成功的塊上的JavaScript的東西。 – ssilas777 2013-02-15 10:43:06
查看http://stackoverflow.com/a/13840431/476 – deceze 2013-02-15 10:44:31