我有一种情况,我想在用户点击链接的同时调用两种不同的控制器方法。一种方法是动作结果方法,一种是用于记录的方法,该方法应该对动作结果方法没有影响。是否可以使用常规http请求对actionResult方法发出请求,并且同时使用ajax对日志记录方法进行ajax调用?
答案 0 :(得分:1)
如果链接并发送ajax请求,您可以使用jQuery劫持click
事件。
$(function(){
$("#yourLinkId").click(function(e){
e.preventDefault();
//make the ajax call here
$.post("yourUrlForAjaxActionMethodHere");
// and do the redirect to the url for which the link was clicked.
window.location.href=$(this).attr("herf");
});
});
假设您的链接ID为“yourLinkId
”
<a id="yourLinkId" href="/YourTargetUrl">Some link</a>
出于任何原因。如果您绝对希望在导航之前从您的ajax调用中获得成功响应,则可以在$.post
方法成功回调中执行此操作
var url=$(this).attr("herf");
$.post("yourUrlForAjaxActionMethodHere",function(){
window.location.href=url;
});
答案 1 :(得分:0)
两个动作方法都不能一起调用,因此最好使用ajax并在另一个成功时调用一个动作方法
<a onclick='someFunc()'>link</a>
<强> AJAX:强>
function someFunc()
{
$.ajax({
type: "POST",
url: @url.action('firstActionMethod','controller'),
success: function(data) {
$.ajax({
type: "POST",
url: @url.action('SecondActionMethod','controller'),
success: /*SUCCESS CODE*/
});
}
});
}