后台代码:
protected void Page_Load(object sender, EventArgs e)
{
tbxText.Value = "200";
TimerExampleState s = new TimerExampleState();
TimerCallback timerDelegate = new TimerCallback(CheckStatus);
System.Threading.Timer timer = new System.Threading.Timer(timerDelegate, s, 1000, 1000);
s.tmr = timer;
}
public void CheckStatus(Object state)
{
TimerExampleState s = (TimerExampleState)state;
Random rd = new Random();
int MoveX = rd.Next(500);
tbxText.Value = MoveX.ToString();
}
前台代码:
<script>
function ss() {
var id = $("#tbxText").val();
alert(id);
setTimeout(ss, 1000);
}
</script>
非常奇怪,弹出框内容总是输出200,并不改变,求大神解释。
ss是在什么时候调用的啊
<script>
function ss() {
var id = $("#tbxText").val();
alert(id);
setTimeout(ss, 1000); //在这里调用的。
}
</script>
@周末末: 看出问题了, 后台代码在刷新,但页面没刷新, 所以js获取到的永远都是200。 如果你单纯为textbox的值跟着时间改变的话, 不应该用后台代码实现。
你都没有产生交互怎么会变化?你在服务器开个定时器然后交互都不做直接就想在前台获取到吗?
在后台这样写 tbxText.Value = MoveX.ToString();
然后在前台用js读取tbxText的值,这不算交互吗?
如果我的想法不行,那大哥你有什么好的建议?
@周末末:
前台归前台,后台归后台.
你在前台的JS读的tbxText跟后台的TbxText没有任何关系.
B/S是请求响应模型,就是你要发一个请求到后台,后台相应你的请求返回一个值到前台.
这个过程就算是一次交互
@吴瑞祥: 大哥你的意思是用ajax来传输数据么?
@周末末: 反正就是传输数据`不管ajax还是直接get都一样