我通过一个按钮事件,事件很简单,就是document.getElementById("te").innerHTM向某个div中加入一个字符串,为什么当我点击按钮时,添加的字符串只是一闪一下,然后又没了。
这是我的代码:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="forDiv.aspx.cs" Inherits="forDiv" %><!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 runat="server">
<title></title>
<script language="javascript" type="text/javascript">
function alertHello() {
document.getElementById("te").innerHTML = "hello";
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Button ID="Button1" runat="server" Text="Button" OnClientClick="alertHello()" />
<div id="te"> </div>
</div>
</form>
</body>
</html>
这是我的代码:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="forDiv.aspx.cs" Inherits="forDiv" %><!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 runat="server">
<title></title>
<script language="javascript" type="text/javascript">
function alertHello() {
document.getElementById("te").innerHTML = "hello";
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Button ID="Button1" runat="server" Text="Button" OnClientClick="alertHello()" />
<div id="te"> </div>
</div>
</form>
</body>
</html>
OnClientClick="alertHello();return false;" 你加个这个就好了!
顺序也是先js,后post
post是可以理解为刷新页面,所以你的js在新页面里还没有调用2楼的这个
OnClientClick="alertHello();return false;"
就是让你只触发js,不提交form
1. 回发简单地说就是与服务器完成一次会话或者交互的过程。
2. <asp:Button ID="Button1" runat="server" Text="Button" OnClientClick="alertHello()" />
你把你这个button控件改成客户端的 Input控件啊,这样就不会回发了啊。
<head runat="server">
<title></title>
<script language="javascript" type="text/javascript">
var xmlText;
var bloglist = new Array();
function startload() {
if (window.ActiveXObject) {
xmlText = new ActiveXObject("Microsoft.XMLHTTP");
}
else if (window.XMLHttpRequest) {
xmlText = new XMLHttpRequest();
}
else {
alert("NO Object!!!");
} xmlText.onreadystatechange = hanleState;
xmlText.open("GET", "http://www.blogjava.net/zbw25/Rss.aspx", true);
// xmlText.open("GET", "noContent.txt", true);
xmlText.send(null);
}
function hanleState() {
if (xmlText.readyState == 4 && xmlText.status == 200) {
document.getElementById("te").innerHTML = xmlText.responseText;
} }
</Script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Button ID="Button1" runat="server" Text="Button" OnClientClick="startload();" />
</div>
<div id="te"></div>
</form>
</body>
</html>
OnClientClick="alertHello();return false;" 你加个这个就好了!
<asp:Button ID="Button1" runat="server" Text="Button" OnClientClick="alertHello()" />
改成
<input type="button" id="Button1" Text="Button" onclick="alertHello()">ASP.NET 尽量少用 服务器控件。就是直接从 工具箱拉过来的空间,
回发是,服务器控件单击一下,页面会整个刷新,而html控件只负责对哪个事件执行,其他是无刷新的。多学下哦
你的ajax执行完后,也会执行本身的OnClick事件,产生页面回传提交。
改正方法很多:
1.在你的OnClientClick事件中加:return false
2.不要用服务器控件。and so on。