前台javascript调用后台C#函数时,如何不让页面跳转及刷新
网页中某部分代码如下:<script>functionKeyPress(keyDown){varst=keyDown.toString();if(st=="0")docu...
网页中某部分代码如下:
<script>
function KeyPress(keyDown){
var st=keyDown.toString();
if(st=="0") document.write("<%Datasubmit("0");%>");
else if(st=="1") document.write("<%Datasubmit("1");%>");
else if(st=="2") document.write("<%Datasubmit("2");%>");
else if(st=="3") document.write("<%Datasubmit("3");%>");
else if(st=="4") document.write("<%Datasubmit("4");%>");
else if(st=="5") document.write("<%Datasubmit("5");%>");
else if(st=="6") document.write("<%Datasubmit("6");%>");
else if(st=="7") document.write("<%Datasubmit("7");%>");
else if(st=="8") document.write("<%Datasubmit("8");%>");
else if(st=="9") document.write("<%Datasubmit("9");%>");
else document.write("<%Datasubmit("error");%>");
}
</script>
后台C#存在一个函数Datasubmit:
public void Datasubmit(string str)
{
string dir = str;
}
前台可以调用Datasubmit方法并将str置为正确的值,但是会导致页面跳转到一个空白页(准确的说应该是一个C#的通知页,只不过没有内容,如果在Datasubmit方法内加上Response(str),就会在空白页上显示str的值。)
现在我的问题就是想请教.net的高手,如何才能使得这样的跳转不出现,甚至是使得页面都不刷新(即用户未知的情况下,将数据传递给后台的Datasubmit方法)。
我知道Ajax可以实现局部刷新,也在网页中也部分用到了。但是很抱歉,我问题中的这个数据很特殊,它不是存在于某个控件中的,而是在flash中的被用户操作以后产生的(实际上KeyPress是一个在Flash的脚本代码中注册的一个函数),因此不能使用Ajax。忘了加上这个前提了!
yiwei124,感谢您的回答!
到了这个步骤,已经没有和flash有多大关系了,flash已经完成了将数据传递到网页的javascript中的功能了,现在就是在网页和后台间交换数据的问题;嗯,其实我最初的想法是将keyDown的值写入一个隐藏的asp:textbox标签中,并再加一个隐藏的asp:Button(假设id为“SubmitButton”);当写入textbox数据后,通过在js中加入document.getElementById("SubmitButton").click()实现自动点击,然后在后台C#用一个SubmitButton_Click方法从textbox中获得数据,不过我发现后台每次获得的数据都是空值,请问有没有解决方法,十分感谢!
问题解决了!采用的是隐藏按钮和隐藏文本框的方法,感谢各位的热情参与和解答。 展开
<script>
function KeyPress(keyDown){
var st=keyDown.toString();
if(st=="0") document.write("<%Datasubmit("0");%>");
else if(st=="1") document.write("<%Datasubmit("1");%>");
else if(st=="2") document.write("<%Datasubmit("2");%>");
else if(st=="3") document.write("<%Datasubmit("3");%>");
else if(st=="4") document.write("<%Datasubmit("4");%>");
else if(st=="5") document.write("<%Datasubmit("5");%>");
else if(st=="6") document.write("<%Datasubmit("6");%>");
else if(st=="7") document.write("<%Datasubmit("7");%>");
else if(st=="8") document.write("<%Datasubmit("8");%>");
else if(st=="9") document.write("<%Datasubmit("9");%>");
else document.write("<%Datasubmit("error");%>");
}
</script>
后台C#存在一个函数Datasubmit:
public void Datasubmit(string str)
{
string dir = str;
}
前台可以调用Datasubmit方法并将str置为正确的值,但是会导致页面跳转到一个空白页(准确的说应该是一个C#的通知页,只不过没有内容,如果在Datasubmit方法内加上Response(str),就会在空白页上显示str的值。)
现在我的问题就是想请教.net的高手,如何才能使得这样的跳转不出现,甚至是使得页面都不刷新(即用户未知的情况下,将数据传递给后台的Datasubmit方法)。
我知道Ajax可以实现局部刷新,也在网页中也部分用到了。但是很抱歉,我问题中的这个数据很特殊,它不是存在于某个控件中的,而是在flash中的被用户操作以后产生的(实际上KeyPress是一个在Flash的脚本代码中注册的一个函数),因此不能使用Ajax。忘了加上这个前提了!
yiwei124,感谢您的回答!
到了这个步骤,已经没有和flash有多大关系了,flash已经完成了将数据传递到网页的javascript中的功能了,现在就是在网页和后台间交换数据的问题;嗯,其实我最初的想法是将keyDown的值写入一个隐藏的asp:textbox标签中,并再加一个隐藏的asp:Button(假设id为“SubmitButton”);当写入textbox数据后,通过在js中加入document.getElementById("SubmitButton").click()实现自动点击,然后在后台C#用一个SubmitButton_Click方法从textbox中获得数据,不过我发现后台每次获得的数据都是空值,请问有没有解决方法,十分感谢!
问题解决了!采用的是隐藏按钮和隐藏文本框的方法,感谢各位的热情参与和解答。 展开
5个回答
展开全部
看了你的代码,和你对需求的描述,说实话,这个问题对你来说有点难度,建议你花一些时间来学习一下Ajax,因为这个用Ajax来做很简单,而这个问题也不是一句两句能说明白的,想成长,还是需要自己多努力的,祝你早日成长。
______________________________________________________________________
问题补充:我知道Ajax可以实现局部刷新,也在网页中也部分用到了。但是很抱歉,我问题中的这个数据很特殊,它不是存在于某个控件中的,而是在flash中的被用户操作以后产生的(实际上KeyPress是一个在Flash的脚本代码中注册的一个函数),因此不能使用Ajax。忘了加上这个前提了!
那真的是不好意思了,你找个flash的高手吧,这个分类下的高手会flash的很少啊。祝你早日解决问题。
______________________________________________________________________
问题补充:我知道Ajax可以实现局部刷新,也在网页中也部分用到了。但是很抱歉,我问题中的这个数据很特殊,它不是存在于某个控件中的,而是在flash中的被用户操作以后产生的(实际上KeyPress是一个在Flash的脚本代码中注册的一个函数),因此不能使用Ajax。忘了加上这个前提了!
那真的是不好意思了,你找个flash的高手吧,这个分类下的高手会flash的很少啊。祝你早日解决问题。
展开全部
又是这个问题。解释起来很麻烦的。
简而言之,就是这个Datasubmit("9")不是在你的js被执行时执行,而是在页面一开始生成时就执行了9次。
简而言之,就是这个Datasubmit("9")不是在你的js被执行时执行,而是在页面一开始生成时就执行了9次。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
采用ajax 异步调用更新。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个你用Ajax实现是很简单的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
使用ajax技术吧 用这个很容易就实现了 你去网上下一个AjaxPro.2.dll 这是ajax 然后你再看看网上的实例 网上一搜就出来了 很多
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询