不同浏览器中的LinkBut​​ton PageMethod行为不一致

 手机用户2502858341 发布于 2023-02-11 10:37

我在一个执行回发的页面上有一个LinkBut​​ton,但也有一个onClientClick事件.我们的想法是在后台设置一些会话变量来自客户端数据(不要问).

我在Web方法中设置了一个断点来逐步执行代码,我们遇到的是,根据浏览器的不同,PageMethods可能会返回成功消息,失败消息或根本没有消息.此外,无论PageMethods结果如何,都可以调用或不调用Web方法.

这是一个方便的结果小图表:

Browser          PageMethods    WebMethod
--------------   -------------  --------------------
IE 8, 9, 10      Success        Called successfully
Safari 5.1.7     Failure        *Never called*
Firefox 25.0.1   *Neither*      Called successfully
Chrome v31       Failure        Called successfully

这是四种不同的浏览器,以及四种不同的结果.

我已经尝试在服务器端和客户端代码中生成具有相同效果的链接按钮,甚至没有在WebMethod中设置会话变量,结果相同.

可以使用以下简单代码重现代码:






    

        
Do stuff!

protected void Page_Load(object sender, EventArgs e)
{
    LinkButton lbAdd = new LinkButton();
    lbAdd.Text = "Web method test";
    lbAdd.CausesValidation = false;
    lbAdd.OnClientClick = "doStuff();";
    mainForm.Controls.Add(lbAdd);
}

[WebMethod]
public static void doStuffWebMethod(string a, string b)
{
    try
    {
        //System.Web.HttpContext.Current.Session["a"] = a;
        //System.Web.HttpContext.Current.Session["b"] = b;
        string x = a + b;
    }
    catch (Exception ex)
    {
        //
    }
}

问题:

为什么我的Web方法在Safari中失败,并在三个其他浏览器中给我三个不同的返回消息之一?

如何更改此代码以使其在提到的浏览器中工作?

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有