0

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

  1. 想知道总是这样吗?

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

  3. 我可以先运行后端方法,但仍想触发 JS 功能吗?

问候

4

3 回答 3

3

想知道总是这样吗?

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

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

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

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

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

我可以先运行后端方法,但仍想触发 JS 功能吗?

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

于 2013-02-15T10:41:51.303 回答
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> 
于 2013-02-15T10:53:37.853 回答
1

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

  1. 服务器端代码需要 arequest来返回response. HTTP 适用于RequestResponse架构。基本上客户端发出请求以获得响应(即结果或所需数据)

无论您postback or return true对服务器做什么,它都会执行服务器端方法。

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

这里的返回值是函数返回的值,如果你返回真值,它将转到服务器方法,如果你返回假,它将阻止默认操作。

我可以先运行后端方法,但仍想触发 JS 功能吗?

你可以。使用阿贾克斯。基本上 Ajax 请求是 XMLHTTPRequest。用于更新部分部分。

于 2013-02-15T10:40:39.947 回答