为什么JavaScript函数在.NET动作之前触发?

时间:2013-02-15 10:38:37

标签: javascript jquery asp.net-mvc

我注意到当页面上的链接有JS onclick函数和MVC操作方法时,JS函数会在操作之前触发。

  1. 想知道总是这样吗?

  2. 为什么/如何使用浏览器来运行JS和后端方法?

  3. 我可以先运行后端方法,但仍想激活JS函数吗?

  4. 此致

3 个答案:

答案 0 :(得分:3)

  

想知道总是这样吗?

     

为什么/如何使用浏览器来运行JS和后端方法?

客户端JavaScript在页面内的客户端上运行。服务器端.NET代码在服务器上运行并生成HTML文档(或其他资源)。

要运行服务器端代码,浏览器必须发出HTTP请求。

发出HTTP请求的最简单方法是离开当前页面并从服务器加载一个新页面(通过链接或提交表单)。

由于客户端JavaScript在页面中运行,因此在浏览器离开运行的页面后无法运行。

  

我可以先运行后端方法,但仍想激活JS函数吗?

您可以从JavaScript发出HTTP请求(在执行其他JS操作之前),而不是离开当前页面。这通常使用the XMLHttpRequest object完成,称为Ajax。

答案 1 :(得分:1)

  

为什么/如何使用浏览器来运行JS和后端方法?

  1. 服务器端代码需要request才能返回response。 HTTP适用于RequestResponse架构。基本上客户提出请求以获得响应(即结果或所需数据)
  2. 每当您对服务器执行postback or return true时,它将执行服务器端方法。

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

    这里返回由函数返回的值,如果返回true值,它将转到服务器方法,如果返回false则会阻止默认操作。

      

    我可以先运行后端方法,但仍想激活JS函数吗?

    你可以。使用Ajax。基本上Ajax请求是XMLHTTPRequest。用于更新paritial部分。

答案 2 :(得分: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>