当前位置:编程学习 > C#/ASP.NET >>

WebMethod 的静态方法里面再执行一段 JavaScript 脚本?谢谢

请问怎么在WebMethod 的静态方法里面再执行一段 JavaScript 脚本?谢谢
比如:
[System.Web.Services.WebMethod]
public static void fjzt(string roomid)
{
     System.Web.HttpContext.Current.Response.Write("<script language=javascript>alert('权限不够 !')</script>");//无效!!!       
}

为什么会无效?请问怎么样才能有效的在静态方法里面执行JavaScript ?

回复就给分~~!! --------------------编程问答-------------------- ScriptManager.RegisterStartupScript(this.GetType(), "alert", "alert('权限不够 !')", true);  --------------------编程问答-------------------- 首先很感谢楼上的回复
楼上的的回复有2个问题

第一个 static 里面 需要先处理一下 this

第二个 [System.Web.Services.WebMethod] 后使用 ScriptManager.RegisterStartupScript 会失效! --------------------编程问答-------------------- js不是可以异步访问Web服务的方法,
或者服务器端静态方法吗?

比如有这么个Web服务,

//MyWebService.cs
[System.Web.Script.Services.ScriptService]
public class MyWebService : System.Web.Services.WebService {

    public MyWebService () {

        //如果使用设计的组件,请取消注释以下行 
        //InitializeComponent(); 
    }

    [WebMethod]
    public string fjzt(string roomid) //不要静态了,返回字符串。
    {
        // 就比如1层女的住,2层男的住,3层女的住。。。301女的,201男的。。。
        if (Convert.ToInt32(roomid.Substring(0, 1)) == 0) //如果是偶数      
        {
            return "男的住";
        }
        else
        {
            return "女的住";
        }
    }    
}


Default.aspx
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script type="text/javascript">
        function go() {
            if ($get('roomid').value == "0")
                return false;
            else
                MyWebService.fjzt($get('roomid').value, onOK);
        }
        function onOK(result) {
            alert(result);
        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <asp:ScriptManager ID="ScriptManager1" runat="server">
        <Services>
            <asp:ServiceReference Path="~/MyWebService.asmx" />
        </Services>
    </asp:ScriptManager>
    <div>
        <select id="roomid">
            <option value="0">请选择房间号...</option>
            <option value="301">301房间</option>
            <option value="744">744房间</option>
            <option value="432">432房间</option>
            <option value="221">221房间</option>
            <option value="131">131房间</option>
        </select>
        <input type="button" value="查看" onclick="go();" />
    </div>
    </form>
</body>
</html>
--------------------编程问答-------------------- if (Convert.ToInt32(roomid.Substring(0, 1)) % 2 == 0) //如果是偶数      
{
    return "男的住";
} --------------------编程问答-------------------- WebService有固定的格式,不能通过Response.Write来返回数据。
你可以把方法改成:public static string fjzt(string roomid) 
把需要提示的内容通过字符串返回,然后调用方收到这个返回值后,再把它alert出来。 --------------------编程问答-------------------- 要解决this指针,可以直接传递pThis进去:
public static void fjzt(string roomid,Page pThis) 

     pThis.Response.Write(" <script language=javascript>alert('权限不够 !') </script>");



调用时直接:fjzt("12",this)就可以。

楼主可以试试 --------------------编程问答-------------------- 顶顶~~
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,