但是事实上却报错
通过showCount.htm显示从getCount.aspx页面传过来的数据
数据页
getCount.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="getCount.aspx.cs" Inherits="getCount" %>
var messageCount; //文章数量
function getCount(paramCount)
{
messageCount =paramCount;
}
getCount(<%= messageCount %>)
getCount.aspx<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>显示数据</title>
</head>
<body>
<input id="Text1" type="text" />
<input id="Text2" type="text" />
<script language="javascript" src ="getCount.aspx" ></script>
<script language="javascript" type="text/javascript">
function putCount()
{
document.getElementById("Text1").value = 1; // 将1赋给Text1
document.getElementById("Text2").value = messageCount; // 将messageCount赋给Text2
}
putCount();
</script>
</body>
</html>
数据显示页 运行后
显示为:
并且提示错误错误:
messageCount is not defined
messageCount没有定义
但是事实上这个变量messageCount 在head里面已经定义过了的
只不过现在取不到而已
为什么会发生这种情况呢
因为浏览器是异步调用文件的
因为浏览器一般是先按顺序读取文件
在执行getCount.aspx的同时继续向下读取文件
这2者是异步进行的
当执行到下面这步时
document.getElementById("Text2").value = messageCount; // 将messageCount赋给Text2
有可能getCount.aspx里的messageCount可能还没有被执行
所以就会出这种问题
那么该如何从其他页面取数据呢?
最好的解决办法就是在提供数据的页面提供调用数据的接口
在原有的数据页面里加上一下这段
getCount.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="getCount.aspx.cs" Inherits="getCount" %>
var messageCount; //文章数量
function getCount(paramCount)
{
messageCount =paramCount;
putCount();
}
getCount(<%= messageCount %>)
showCount.htm<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>显示数据</title>
<script language="javascript" type="text/javascript">
function putCount()
{
document.getElementById("Text1").value = 1; // 将1赋给Text1
document.getElementById("Text2").value = messageCount; // 将messageCount赋给Text2
}
</script>
</head>
<body>
<input id="Text1" type="text" />
<input id="Text2" type="text" />
<script language="javascript" src ="getCount.aspx" ></script>
</body>
</html>
经过这样修改程序就完成了在运行时就会显示
一般来说这种错误在本地是很少见的
因为本地取数据够快
在执行到后面的一段javascript的时候前面的一段javascript已经完成
所以不会出什么问题
但是如果是发布到网上
而取数据的那段是从数据库中取数据
而且加上网络质量不好的话
那么很有可能出现这种情况