开发环境:vs2008 sp1 sql2000 ie8
本来前面一段时间做项目一直用的JQ 不过JQ毕竟是封装的JS 现在上面人物需要了解底层 在网上看ajax的一个小实例遇到一点问题 从而引发一连串的问题 望耐心解答.
下面是我利用ajax异步请求来判断一个用户名是否存在的小例子 不过后台始终取不到值 我觉得应该是JS代码的问题 希望看看。<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="关于Ajax异步._Default" %><!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">
    var xmlhttp;
    function Validation()
    {
       //实例化XMLHttpRequest对象
        xmlhttp =new ActiveXObject ("Microsoft.XMLHTTP");
        //找到名为“Text1”的文本框
        var name=document .getElementById ("username").value;
        //利用Open方法向指定URL
        //查询字符串“name”将文本框中的数据传送到目标页面
        xmlhttp.open("Post","Default.aspx?name="+name);
        //设置当服务器响应返回时用于处理响应的函数名
        xmlhttp.onreadystatechange=OnMessageBack;
        //送发请求
        xmlhttp.send(null);
    }
    function OnMessageBack()
    {
      //判断请求状态及HTTP状态是否都能满足条件
        if (xmlhttp.readystate==4&&xmlhttp.status==200)
        {
            //将返回的文本打印到页面上
            document.write (xmlhttp.responsetext);
        }
    }
    </script></head>
<body>
    <form id="form1" runat="server">
    <div>
        <input type="text" id="username" />
        <input id="Button1" type="button" value="button" onclick="javascript:Validation()" />
    </div>
    </form>
</body>
</html>
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.SqlClient;
namespace 关于Ajax异步
{
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {            string name = this.Request.QueryString["name"].ToString();
            if (name != null)
            {
                SqlConnection conn = new SqlConnection("server=.;database=AS_NRM;uid=sa;pwd=sa");
                DataSet ds = new DataSet();
                string sql = string.Format("select count(*) from t_user where name='{0}'", name);
                SqlCommand cmd = new SqlCommand(sql, conn);
                int num = (int)cmd.ExecuteScalar();
                if (num > 0)
                {
                    this.Response.Write("用户名已经存在");
                }
                else
                {
                    this.Response.Write("用户名可以使用!");
                }
            }        }
    }
}
还有一点疑惑.如果我这个页面的.cs页面返回的是一个数据集 例如dataset 我的ajax异步请求后 前台该如何接收并显示呢?

解决方案 »

  1.   

    还有一点疑惑.如果我这个页面的.cs页面返回的是一个数据集 例如dataset 我的ajax异步请求后 前台该如何接收并显示呢?List to json 
    DataTable to json 
      

  2.   

    你只能返回字符串格式或者xml。常用的是返回json格式的字符串,数据集转json的方法
    http://dotnet.aspx.cc/file/jQuery-Receive-ashx-DataSet-JSON.aspx
    另外
     if (xmlhttp.readystate==4&&xmlhttp.status==200)
            {
                //将返回的文本打印到页面上
                document.write (xmlhttp.responsetext);
            }
    这些都是错误的,js是严格区分大小写的
      

  3.   

     xmlhttp.open("Post","Default.aspx?name="+name);这句有问题
      

  4.   

    本帖最后由 net_lover 于 2011-10-21 10:46:05 编辑
      

  5.   

    XMLHttpRequest实现无刷新验证用户名 
    http://blog.csdn.net/sandy945/article/details/4169870
      

  6.   

    ajax 接受后台数据方式有两种,一种为接收String类型数据,一种接收xml数据,如果想返回数据集,数据集数据量大的话,最好把数据集组织成xml然后返回,数据量小组织成String返回就行了。
    自己写的一个例子,是读取xml,希望对楼主有所帮助,
    //流媒体检索返回值处理方法
    function lmtselectProcess(){
    document.getElementById('bcwaitload').style.display='none';
    var xmlDom = req.responseXML;

    var xmlRoot = xmlDom.documentElement;
    var fNode = xmlRoot.getElementsByTagName('server');
    var sNode;
    var tbs='<table width="996" class="tbl_lmtinfonomal" cellspacing="0" cellpadding="0">'
    +'<tr>'
    +'<td class="tbl_title_lmtinfo20px">'
    + '<input type="checkbox" id="checkedall" onclick="checkAllOnclick(this)">'
    +'</td>'
    +'<td class="tbl_title_lmtinfo40px">'
    + '序号'
    +'</td>'
    +'<td class="tbl_title_lmtinfo160px">'
    + '流媒体名称'
    +'</td>'
    +'<td class="tbl_title_lmtinfo80px">'
    + '流媒体IP'
    +'</td>'
    +'<td class="tbl_title_lmtinfo40px">'
    + '状态'
    +'</td>'
    +'<td class="tbl_title_lmtinfo40px">'
    + '类型'
    +'</td>'
    +'<td class="tbl_title_lmtinfo45px">'
    + '是否外接存储'
    +'</td>'
    +'<td class="tbl_title_lmtinfo110px">'
    + '最迟录取录像时间'
    +'</td>'
    +'<td class="tbl_title_lmtinfo90px">'
    + '操作系统版本'
    +'</td>'
    +'<td class="tbl_title_lmtinfo110px">'
    + '流媒体服务器版本'
    +'</td>'
    +'<td class="tbl_title_lmtinfo125px">'
    + '操作系统当前时间'
    +'</td>'
    +'<td class="tbl_title_lmtinfo60px">'
    + '目录'
    +'</td>'
    +'<td class="tbl_title_lmtinfo70px">'
    + '大小(G)'
    +'</td>'
    +'<td class="tbl_title_lmtinfo70px">'
    + '已用(G)'
    +'</td>'
    +'<td class="tbl_title_lmtinfo70px">'
    + '剩余(G)'
    +'</td>'
    +'</tr>';

    var tbe='</table>';
      

  7.   

    for(var i = 0; i < fNode.length; i++){
    tbs = tbs + '<tr>';

    //取得流媒体唯一标识
    var lmtWybs = fNode[i].getElementsByTagName('lmtWybs')[0].firstChild.nodeValue;

    tbs =tbs + '<td class="td_lmtinfowu" rowspan="5"><input type="checkbox" onclick="checkOneOnclick(this)" id="' + lmtWybs + '"/></td>'
    tbs = tbs + '<td class="td_lmtinfowu" rowspan="5">' + (i + 1) + '</td>';

    //取得流媒体IP
    var lmtIp;
    var lmtIpNode = fNode[i].getElementsByTagName('lmtIp');
    {
    try{
    lmtIp = lmtIpNode[0].firstChild.nodeValue;
    }catch(er){
    lmtIp = '';
    }
    }
    //取得流媒体类型
    var lmtType;
    var lmtTypeNode = fNode[i].getElementsByTagName('lmtType');
    {
    try{
    lmtType = lmtTypeNode[0].firstChild.nodeValue;
    }catch(er){
    lmtType = 'IS';
    }
    }
    var lmtConnctionStore;
    var lmtConnctionStoreNode = fNode[i].getElementsByTagName('lmtIsConnectStore');
    {
    try{
    lmtConnctionStore = lmtConnctionStoreNode[0].firstChild.nodeValue;
    }catch(er){
    lmtConnctionStore = '0';
    }
    }

    //流媒体名称节点
    sNode = fNode[i].getElementsByTagName('lmtName');
    {
    try{
    nodeValue = sNode[0].firstChild.nodeValue;
    decodeValue = decodeURI(decodeURI(nodeValue, 'utf-8'), 'utf-8');
    tbs = tbs + '<td class="td_lmtinfowu" rowspan="5"><a onclick="updateLmtOnclick(\'' + decodeValue + '\',\'' + lmtIp + '\',\'' + lmtType + '\',\'' + lmtWybs + '\',\'' + lmtConnctionStore + '\')"><u class="u_lmtinfowu" style=" cursor: hand;">' + decodeValue + '</u></a></td>';
    }catch (er){
    tbs = tbs + '<td class="td_lmtinfowu" rowspan="5">---</td>';
    }
    }

    //流媒体IP节点
    sNode = fNode[i].getElementsByTagName('lmtIp');
    {
    try{
    nodeValue = sNode[0].firstChild.nodeValue;
    tbs = tbs + '<td class="td_lmtinfowu" rowspan="5">' + nodeValue + '</td>';
    }catch(er){
    tbs = tbs + '<td class="td_lmtinfowu" rowspan="5">---</td>';
    }
    }

    //流媒体状态节点
    sNode = fNode[i].getElementsByTagName('lmtState');
    {
    try{
    nodeValue = sNode[0].firstChild.nodeValue;
    var pic;
    if(nodeValue == 1){//流媒体在线
    pic = '<img src=\"../img/ico/g.gif\">';
    }else{
    pic = '<img src=\"../img/ico/x.gif\">';
    }
    tbs = tbs + '<td class="td_lmtinfowu" rowspan="5">' + pic + '</td>';
    }catch(er){
    tbs = tbs + '<td class="td_lmtinfowu" rowspan="5">---</td>';
    }
    }

    //流媒体类型节点
    sNode = fNode[i].getElementsByTagName('lmtType');
    {
    try{
    nodeValue = sNode[0].firstChild.nodeValue;
    var type;
    if(nodeValue == 'IS'){//流媒体在线
    type = '安装版';
    }else if(nodeValue == 'CM'){
    type = '定制版';
    }else{
    type = '---';
    }
    tbs = tbs + '<td class="td_lmtinfowu" rowspan="5">' + type + '</td>';
    }catch(er){
    tbs = tbs + '<td class="td_lmtinfowu" rowspan="5">---</td>';
    }
    }
    //流媒体是否外接存储节点
    sNode = fNode[i].getElementsByTagName('lmtIsConnectStore');
    {
    try{
    nodeValue = sNode[0].firstChild.nodeValue;
    alert
    var type;
    if(nodeValue == '1'){//流媒体在线
    type = '是';
    }else{
    type = '否';
    }
    tbs = tbs + '<td class="td_lmtinfowu" rowspan="5">' + type + '</td>';
    }catch(er){
    tbs = tbs + '<td class="td_lmtinfowu" rowspan="5">否</td>';
    }
    }
    //最迟录取录像时间
    sNode = fNode[i].getElementsByTagName('lmtLastVideoTime');
    {
    try{
    nodeValue = sNode[0].firstChild.nodeValue;
    tbs = tbs + '<td class="td_lmtinfowu" rowspan="5">' + nodeValue + '</td>';
    }catch(er){
    tbs = tbs + '<td class="td_lmtinfowu" rowspan="5">---</td>';
    }
    }

    //服务器操作系统版本
    sNode = fNode[i].getElementsByTagName('sys');
    {
    try{
    nodeValue = sNode[0].firstChild.nodeValue;
    tbs = tbs + '<td class="td_lmtinfowu" rowspan="5">' + nodeValue + '</td>';
    }catch(er){
    tbs = tbs + '<td class="td_lmtinfowu" rowspan="5">---</td>';
    }
    }

    //流媒体服务器版本
    sNode = fNode[i].getElementsByTagName('version');
    {
    try{
    nodeValue = sNode[0].firstChild.nodeValue;
    tbs = tbs + '<td class="td_lmtinfowu" rowspan="5">' + nodeValue + '</td>';
    }catch(er){
    tbs = tbs + '<td class="td_lmtinfowu" rowspan="5">---</td>';
    }
    }

    //写入时间
    sNode = fNode[i].getElementsByTagName('writeInTime');
    {
    try{
    nodeValue = sNode[0].firstChild.nodeValue;
    tbs = tbs + '<td class="td_lmtinfowu" rowspan="5">' + nodeValue + '</td>';
    }catch(er){
    tbs = tbs + '<td class="td_lmtinfowu" rowspan="5">---</td>';
    }
    }

    //根目录
    tbs = tbs + '<td class="td_lmtinfowu">根目录</td>';

    //根目录大小
    sNode = fNode[i].getElementsByTagName('sizeroot');
    {
    try{
    nodeValue = sNode[0].firstChild.nodeValue;
    tbs = tbs + '<td class="td_lmtinfowu">' + nodeValue + '</td>';
    }catch(er){
    tbs = tbs + '<td class="td_lmtinfowu">---</td>';
    }
    }

    //根目录已用
    sNode = fNode[i].getElementsByTagName('usedroot');
    {
    try{
    nodeValue = sNode[0].firstChild.nodeValue;
    tbs = tbs + '<td class="td_lmtinfowu">' + nodeValue + '</td>';
    }catch(er){
    tbs = tbs + '<td class="td_lmtinfowu">---</td>';
    }
    }

    //根目录可用
    sNode = fNode[i].getElementsByTagName('availroot');
    {
    try{
    nodeValue = sNode[0].firstChild.nodeValue;
    if(nodeValue >= 5){
    tbs = tbs + '<td class="td_lmtinfowu">' + nodeValue + '</td>';
    }else{
    tbs = tbs + '<td class="td_lmtinfowu"><font color="red">' + nodeValue + '</font></td>';
    }

    }catch(er){
    tbs = tbs + '<td class="td_lmtinfowu">---</td>';
    }
    }

    //结束行 和 var目录开始
    tbs = tbs + '</tr><tr>' + '<td class="td_lmtinfowu">var</td>';

    //var大小
    sNode = fNode[i].getElementsByTagName('sizevar');
    {
    try{
    nodeValue = sNode[0].firstChild.nodeValue;
    tbs = tbs + '<td class="td_lmtinfowu">' + nodeValue + '</td>';
    }catch(er){
    tbs = tbs + '<td class="td_lmtinfowu">---</td>';
    }
    }

    //var已用
    sNode = fNode[i].getElementsByTagName('usedvar');
    {
    try{
    nodeValue = sNode[0].firstChild.nodeValue;
    tbs = tbs + '<td class="td_lmtinfowu">' + nodeValue + '</td>';
    }catch(er){
    tbs = tbs + '<td class="td_lmtinfowu">---</td>';
    }
    }

    //var可用
    sNode = fNode[i].getElementsByTagName('availvar');
    {
    try{
    nodeValue = sNode[0].firstChild.nodeValue;
    //tbs = tbs + '<td class="td_lmtinfowu">' + nodeValue + '</td>';
    if(nodeValue >= 5){
    tbs = tbs + '<td class="td_lmtinfowu">' + nodeValue + '</td>';
    }else{
    tbs = tbs + '<td class="td_lmtinfowu"><font color="red">' + nodeValue + '</font></td>';
    }
    }catch(er){
    tbs = tbs + '<td class="td_lmtinfowu">---</td>';
    }
    }

    //结束行 和 vod目录开始
    tbs = tbs + '</tr><tr>' + '<td class="td_lmtinfowu">vod</td>';

    //vod大小
    sNode = fNode[i].getElementsByTagName('sizevod');
    {
    try{
    nodeValue = sNode[0].firstChild.nodeValue;
    tbs = tbs + '<td class="td_lmtinfowu">' + nodeValue + '</td>';
    }catch(er){
    tbs = tbs + '<td class="td_lmtinfowu">---</td>';
    }
    }
      

  8.   

    //vod已用
    sNode = fNode[i].getElementsByTagName('usedvod');
    {
    try{
    nodeValue = sNode[0].firstChild.nodeValue;
    tbs = tbs + '<td class="td_lmtinfowu">' + nodeValue + '</td>';
    }catch(er){
    tbs = tbs + '<td class="td_lmtinfowu">---</td>';
    }
    }

    //vod可用
    sNode = fNode[i].getElementsByTagName('availvod');
    {
    try{
    nodeValue = sNode[0].firstChild.nodeValue;
    //tbs = tbs + '<td class="td_lmtinfowu">' + nodeValue + '</td>';
    if(nodeValue >= 5){
    tbs = tbs + '<td class="td_lmtinfowu">' + nodeValue + '</td>';
    }else{
    tbs = tbs + '<td class="td_lmtinfowu"><font color="red">' + nodeValue + '</font></td>';
    }
    }catch(er){
    tbs = tbs + '<td class="td_lmtinfowu">---</td>';
    }
    }

    //结束行 和 usr目录开始
    tbs = tbs + '</tr><tr>' + '<td class="td_lmtinfowu">usr</td>';

    //usr大小
    sNode = fNode[i].getElementsByTagName('sizeusr');
    {
    try{
    nodeValue = sNode[0].firstChild.nodeValue;
    tbs = tbs + '<td class="td_lmtinfowu">' + nodeValue + '</td>';
    }catch(er){
    tbs = tbs + '<td class="td_lmtinfowu">---</td>';
    }
    }

    //usr已用
    sNode = fNode[i].getElementsByTagName('usedusr');
    {
    try{
    nodeValue = sNode[0].firstChild.nodeValue;
    tbs = tbs + '<td class="td_lmtinfowu">' + nodeValue + '</td>';
    }catch(er){
    tbs = tbs + '<td class="td_lmtinfowu">---</td>';
    }
    }

    //usr可用
    sNode = fNode[i].getElementsByTagName('availusr');
    {
    try{
    nodeValue = sNode[0].firstChild.nodeValue;
    //tbs = tbs + '<td class="td_lmtinfowu">' + nodeValue + '</td>';
    if(nodeValue >= 5){
    tbs = tbs + '<td class="td_lmtinfowu">' + nodeValue + '</td>';
    }else{
    tbs = tbs + '<td class="td_lmtinfowu"><font color="red">' + nodeValue + '</font></td>';
    }
    }catch(er){
    tbs = tbs + '<td class="td_lmtinfowu">---</td>';
    }
    }

    //结束行 和 data目录开始
    tbs = tbs + '</tr><tr>' + '<td class="td_lmtinfowu">data</td>';

    //data大小
    sNode = fNode[i].getElementsByTagName('sizedata');
    {
    try{
    nodeValue = sNode[0].firstChild.nodeValue;
    tbs = tbs + '<td class="td_lmtinfowu">' + nodeValue + '</td>';
    }catch(er){
    tbs = tbs + '<td class="td_lmtinfowu">---</td>';
    }
    }

    //data已用
    sNode = fNode[i].getElementsByTagName('useddata');
    {
    try{
    nodeValue = sNode[0].firstChild.nodeValue;
    tbs = tbs + '<td class="td_lmtinfowu">' + nodeValue + '</td>';
    }catch(er){
    tbs = tbs + '<td class="td_lmtinfowu">---</td>';
    }
    }

    //data可用
    sNode = fNode[i].getElementsByTagName('availdata');
    {
    try{
    nodeValue = sNode[0].firstChild.nodeValue;
    //tbs = tbs + '<td class="td_lmtinfowu">' + nodeValue + '</td>';

    if(nodeValue >= 5){
    tbs = tbs + '<td class="td_lmtinfowu">' + nodeValue + '</td>';
    }else{
    tbs = tbs + '<td class="td_lmtinfowu"><font color="red">' + nodeValue + '</font></td>';
    }
    }catch(er){
    tbs = tbs + '<td class="td_lmtinfowu">---</td>';
    }
    }

    //结束行 和 data目录开始
    tbs = tbs + '</tr>';
    }
    tbs = tbs + tbe;
    //alert(tbs);
    document.getElementById('lmtlist').innerHTML = tbs;
    //alert(xmlRoot.getElementsByTagName('server')[2].getElementsByTagName('lmtName')[0].firstChild.nodeValue );
    }