我注意到当页面上的链接有JS onclick函数和MVC操作方法时,JS函数会在操作之前触发。
想知道总是这样吗?
为什么/如何使用浏览器来运行JS和后端方法?
我可以先运行后端方法,但仍想激活JS函数吗?
此致
答案 0 :(得分:3)
想知道总是这样吗?
为什么/如何使用浏览器来运行JS和后端方法?
客户端JavaScript在页面内的客户端上运行。服务器端.NET代码在服务器上运行并生成HTML文档(或其他资源)。
要运行服务器端代码,浏览器必须发出HTTP请求。
发出HTTP请求的最简单方法是离开当前页面并从服务器加载一个新页面(通过链接或提交表单)。
由于客户端JavaScript在页面中运行,因此在浏览器离开运行的页面后无法运行。
我可以先运行后端方法,但仍想激活JS函数吗?
您可以从JavaScript发出HTTP请求(在执行其他JS操作之前),而不是离开当前页面。这通常使用the XMLHttpRequest
object完成,称为Ajax。
答案 1 :(得分:1)
为什么/如何使用浏览器来运行JS和后端方法?
request
才能返回response
。 HTTP适用于Request
和Response
架构。基本上客户提出请求以获得响应(即结果或所需数据)每当您对服务器执行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>