程序一运行到xmlhttpresponseText就停了,,下一句执行不了,为什么呢?
写最基本的注册页面
- HTML code
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="regest.aspx.cs" Inherits="regest" %> <!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 checkName() { var xmlhttp; if (window.XMLHttpRequest) { xmlhttp = new XMLHttpRequest(); } else { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } var name = document.getElementById("userName").value; if (name == null) { alert("用户名为空"); return; } var url = "Default.aspx?name="+escape(name); xmlhttp.onreadystatechange = function () { if (xmlhttp.readyState == 4) { document.getElementById('span1').innerHTML = xmlhttp.responseText; alert("用户名为空!"); } } xmlhttp.open("POST", url, true); xmlhttp.send(null); } </script> </head> <body> <form id="form1" runat="server"> <div> <table> <tr> <td align="center">新用户注册</td> </tr> <tr> <td> <input type="text" name="username" id="username" onchange="checkName()"; /> </td> <td> <span id="span1"></span> </td> </tr> </table> </div> </form> </body> </html>
Defualt.aspx.cs里面的
- C# code
public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { string name = Request["name"]; if (name == "sss") { Response.Write("测试成功"); } } }
------解决方案--------------------
if (xmlhttp.readyState == 4)
改为
if (xmlhttp.readyState == 4 && status == 200)
另外看一下是否是跨域了,最好的方法是打开firefox(要用firebug)或者chrome,在审查元素的网络一项看发出的请求和对应的响应分别是怎样。
------解决方案--------------------
xmlhttp.readyState 正常到4没有 。
逐步排查下 。
------解决方案--------------------
if (xmlhttp.readyState == 4)
改成
if (xmlhttp.readyState==4 && xmlhttp.status==200)
另外 var url = "Default.aspx?name="+escape(name);
内容不多,而且name的值不需要保密的话,用get方法
返回值的速度要快些
------解决方案--------------------
xmlhttpresponseText 在代码中没有吧。
还有。
你提交的方式是用post的话,是要设置头的。
xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
建议改为get方法。
------解决方案--------------------
不是提交大文件或密码之类的就用get方法较好。
------解决方案--------------------