首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Ajax >

初学AJAX。XMLHTTPresponseText有关问题

2012-02-15 
初学AJAX。。XMLHTTPresponseText问题 - Web 开发 / Ajax程序一运行到xmlhttpresponseText就停了,,下一句执

初学AJAX。。XMLHTTPresponseText问题 - Web 开发 / Ajax
程序一运行到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方法较好。
[解决办法]


不是xmlhttpresponseText而是responseText吧

热点排行