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">--------------------编程问答-------------------- if (Convert.ToInt32(roomid.Substring(0, 1)) % 2 == 0) //如果是偶数
<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>
{
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