我是 asp.net mvc 的新手。
我有一个页面,最初有一个链接,该链接将使用 javascript 弹出一个窗口,允许他们登录到他们的 facebook 页面。
这很好,但现在我需要在弹出窗口之前更新我们数据库中的一些数据。我添加了一个在用户单击链接时调用的方法(不返回任何内容)。在控制器方法中,我更新了我的数据库,然后什么也不返回(也就是说,没有返回任何视图。)只要代码返回,原始的 javascript 就会触发并打开 facebook 窗口。
这种方法适用于 IE,但 javascript 不会在 chrome 或 firefox 中触发。我究竟做错了什么?
这是原始代码:
<a onclick="ShareFacebook('@Model.ShareFacebookTitle', '@Model.ShareFacebookBody');" class="facebook" target="_blank">
<img src="/Content/images/socialMediaIcons/facebookIcon.png" alt="Add to Facebook" onmouseover="this.src='/Content/images/socialMediaIcons/colorFacebookIcon.png'"
onmouseout="this.src='/Content/images/socialMediaIcons/greyFacebookIcon.png'" /></a>
这适用于所有 3 个浏览器。
然后我将代码更改为如下所示:
@Ajax.ImageActionLink("/Content/images/socialMediaIcons/facebookIcon.png", "facebook", "/Content/images/socialMediaIcons/colorFacebookIcon.png", "/Content/images/socialMediaIcons/greyFacebookIcon.png",
"ShareViaFacebook", "ContactUs",
new { ... paremeters not relevant here },
new AjaxOptions
{
HttpMethod = "POST",
InsertionMode = InsertionMode.Replace,
UpdateTargetId = "content-dialog",
OnComplete = "ShareFacebook('@Model.ShareFacebookTitle', '@Model.ShareFacebookBody');"
}, null)
并添加了一个控制器方法:
public void ShareViaFacebook(... parameters not relevant here)
{
//do database update
}
基本上,我将 ShareFacebook javascript 方法从原始代码中的 onclick 事件移动到修改后的代码中的 OnComplete 事件。如前所述,这在 IE 中运行良好,但在 Chrome 和 Firefox 中,OnComplete 事件永远不会触发。
Chrome 和 Firefox 不会触发此事件是否有原因,我可以做些什么来让它触发吗?我尝试使用 OnSuccess 事件,但这也不会触发。我还尝试更改 ShareViaFacebook 签名以返回 ActionResult,然后在代码中返回 new EmptyResult()。那也没有解决它。返回空视图 (View()) 或部分视图 (PartialView()) 也不起作用。