2013-02-15 35 views
0

我注意到,當頁面上的鏈接有JS onclick函數和一個MVC動作方法時,JS函數在動作之前觸發。爲什麼JavaScript功能在.NET動作之前觸發?

  1. 想知道這總是如此嗎?

  2. 爲什麼瀏覽器希望運行JS和後端方法?

  3. 我可以先運行後端方法,但仍然想要啓動JS函數嗎?

問候

+0

調用一個jQuery AJAX功能上的onclick事件,並做成功的塊上的JavaScript的東西。 – ssilas777 2013-02-15 10:43:06

+0

查看http://stackoverflow.com/a/13840431/476 – deceze 2013-02-15 10:44:31

回答

1

爲什麼/瀏覽器如何deside運行JS和後端的方法?

  1. 服務器端代碼將需要一個request返回response。 HTTP適用於RequestResponse體系結構。基本上客戶端發出請求以獲得響應(即結果或期望的數據)

無論你做什麼postback or return true到服務器,它都會執行服務器端方法。

<a href='#' onclick="return SomeFunction();">ClickHereToSee</a> 

回到這裏它是由函數返回,如果返回真值將轉至服務器的方法,如果返回的錯誤會阻止默認動作值。

我可以先運行後端方法,但仍然想要啓動JS函數嗎?

你可以。使用Ajax。基本上Ajax請求是XMLHTTPRequest。用於更新部分部分。

+0

非常感謝@Ravi – Xavier 2013-02-15 11:03:11

3

想知道這總是如此嗎?

爲什麼瀏覽器希望運行JS和後端方法?

客戶端JavaScript運行在客戶端,頁面內。服務器端.NET代碼在服務器上運行並生成一個HTML文檔(或其他資源)。

要運行服務器端代碼,瀏覽器必須發出HTTP請求。

發出HTTP請求的最簡單方法是離開當前頁面並從服務器加載一個新頁面(通過鏈接或提交表單)。

由於客戶端JavaScript在網頁上運行,不能在瀏覽器已經離開它運行的頁面之後運行。

我可以先運行後端方法,但還是要火JS功能?

您可以從JavaScript(在執行其他JS操作之前)發出HTTP請求,而不是離開當前頁面。這通常通過the XMLHttpRequest object完成,並稱爲Ajax。

+0

非常有幫助!謝謝 – Xavier 2013-02-15 11:02:23

1
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> 
+0

太棒了!非常感謝 – Xavier 2013-02-15 11:02:53

相關問題