下面的代码第一次点击按钮时,总是弹出undefined,第二次以上才会弹出0;
请问怎么才能让代码第一次就弹出0呢?
GetCallbackEventReference的最后一个参数无论是true,还是false,都不起作用,一个简单的ICallbackEventHandler实现示例:
<%@ Page language="c#" %>
<%@ Implements Interface="System.Web.UI.ICallbackEventHandler" %>
<html>
<head>
<script language="C#" runat="server">
// 接口实现
public string GetCallbackResult() {
return "0";
}
public void RaiseCallbackEvent(string eventArgument) { }
</script>
<script type="text/javascript">
var flg;
function CallServer(){
var arg = "abc";
<%=ClientScript.GetCallbackEventReference(this, "arg", "JsRecieve", null, null, true) %>;
}
function JsRecieve(ret){
flg = ret;
}
function SubmitCheck(){
CallServer();
alert(flg);// 第一次运行,这里总是弹出undefined
}
</script>
</head>
<body>
<form runat="server">
<input type="button" onclick="SubmitCheck();" value="test">
</form>
</body>
</html>
请问怎么才能让代码第一次就弹出0呢?
GetCallbackEventReference的最后一个参数无论是true,还是false,都不起作用,一个简单的ICallbackEventHandler实现示例:
<%@ Page language="c#" %>
<%@ Implements Interface="System.Web.UI.ICallbackEventHandler" %>
<html>
<head>
<script language="C#" runat="server">
// 接口实现
public string GetCallbackResult() {
return "0";
}
public void RaiseCallbackEvent(string eventArgument) { }
</script>
<script type="text/javascript">
var flg;
function CallServer(){
var arg = "abc";
<%=ClientScript.GetCallbackEventReference(this, "arg", "JsRecieve", null, null, true) %>;
}
function JsRecieve(ret){
flg = ret;
}
function SubmitCheck(){
CallServer();
alert(flg);// 第一次运行,这里总是弹出undefined
}
</script>
</head>
<body>
<form runat="server">
<input type="button" onclick="SubmitCheck();" value="test">
</form>
</body>
</html>
解决方案 »
- c# 让后台定时自动运行一段程序,应该如何入手??急
- mvc2 <%=Html.ActionLink() %>问题
- .net网站如何用ajax读取sql数据,并在html中显示数据
- 关于从web页面的textBox中向后台的表里插数据,我是小白,万盼回复~~~~
- 提两个关于数字字符串的问题
- asp.net中session的用法,最好能有小例子
- 用tlbimp.exe导出组件~~
- asp htc 数据岛 如何支持firefox
- 文章列表分2列显示
- TreeView 的问题,那位老大帮我下嘛。。
- 求一javascript, button1点后另外一个button可用!
- 写入数据库问题,求救高手,急!
// 接口实现
public string GetCallbackResult()
{
return "0";
}
public void RaiseCallbackEvent(string eventArgument) { }
</script> <script type="text/javascript">
var flg;
function CallServer(){
var arg = "abc";
<%=ClientScript.GetCallbackEventReference(this, "arg", "JsRecieve", null, null, true) %>;
}
function JsRecieve(ret){
flg = ret;
alert(flg);//这句要放在这里
}
function SubmitCheck(){
CallServer();
//alert(flg);// 第一次运行,这里总是弹出undefined
}
</script>
{
protected string txtUserInfo; //用户基本信息 protected void Page_Load(object sender, EventArgs e)
{
//动态注册JavaScript
String cbReference = Page.ClientScript.GetCallbackEventReference(this, "arg", "ReceiveServerData", "context");
String callbackScript;
callbackScript = "function CallServer(arg, context)" + "{ " + cbReference + "} ;";
Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "CallServer", callbackScript, true);
} //引发Callback事件处理
public void RaiseCallbackEvent(string txtFirstName)
{
if (txtFirstName != null)
{
SqlConnection conn = new SqlConnection("data source=.;initial catalog=Northwind;Integrated Security=True");
conn.Open(); SqlCommand cmd = new SqlCommand("select EmployeeID,FirstName,City,Address from Employees where FirstName=@FirstName", conn);
cmd.Parameters.Add("@FirstName", SqlDbType.NVarChar, 10).Value = txtFirstName;
SqlDataReader dr = cmd.ExecuteReader(); if (dr.Read())
{
txtUserInfo = "员工代号:" + dr["EmployeeID"] + " ,";
txtUserInfo += "姓名:" + dr["FirstName"] + " ,";
txtUserInfo += "居住城市:" + dr["City"] + " ,";
txtUserInfo += "地址:" + dr["Address"].ToString().Replace("\r\n","") + " ,";
txtUserInfo += "服务器查询时间:" + DateTime.Now.ToLongTimeString();
}
else
{
if (String.IsNullOrEmpty(txtFirstName))
{
txtUserInfo = "请输入姓名";
}
else
{
txtUserInfo = "查无此人!";
}
} cmd.Dispose();
dr.Dispose();
conn.Dispose();
}
} //返回Callback结果
public string GetCallbackResult()
{
return txtUserInfo; //返回员工基本信息
}
<script type="text/JavaScript">
function DoSearch()
{
var txtFirstName = document.getElementById("txtUserName");
CallServer(txtFirstName.value, "");
}
function ReceiveServerData(txtUserInfo)
{
Results.innerText = txtUserInfo;
}
setInterval('DoSearch()',1000);
</script></head>
<body>
<form id="form1" runat="server">
<div>
姓名:<input id="txtUserName" type="text" /><br />
<span ID="Results" style="background-color: pink; width: 500px;"></span>
</div>
</form>
下面是微软封装的js函数的部分内容 if (setRequestHeaderMethodExists) {
xmlRequest.onreadystatechange = WebForm_CallbackComplete;
callback.xmlRequest = xmlRequest;
xmlRequest.open("POST", theForm.action, true);// 最后一个参数为true,表示异步执行回调
xmlRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xmlRequest.send(postData);
return;
}
正因如此,所以使用ICallbackEventHandler接口,不可能实现同步执行,只能是异步执行还是那个疑问:GetCallbackEventReference方法的最后一个参数又有什么作用呢?