asp.net +ajax通信问题。。。。。

dys_198102 2008-10-31 03:54:23
代码如下:
<script language="javascript" type="text/javascript">
function js()
{
var UserName = document.form1.TextBox1.value;
var PassWord = document.form1.TextBox2.value;
var url = "/Default.aspx?UserName='" + UserName+"'&PassWord='" +PassWord+"'";
if(document.form1.TextBox1.value=="" || document.form1.TextBox2.value=="")
{
color_err();
}
else
{

createXMLHttpRequest();
XMLHttp.open("GET", url, true);
// XMLHttp.setRequestHeader("content-type","text/xml");
XMLHttp.onreadystatechange = returnResult;
XMLHttp.send(null);
}
}

function color_err()
{
var name_=document.getElementById("floatdiv");
name_.innerHTML="用户名或密码不能为空!";
name_.style.color="red";
name_.style.fontWeight="bold";
}
function login_err()
{
var name_=document.getElementById("floatdiv");
name_.innerHTML="用户名或密码错误!";
name_.style.color="red";
name_.style.fontWeight="bold";
}

var XMLHttp= false;
function createXMLHttpRequest()
{
if(window.ActiveXObject)
{
XMLHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
else if(window.XMLHttpRequest)
{
XMLHttp=new XMLHttpRequest;
}
}



function returnResult()
{
var tt="1";
if(XMLHttp.readyState==4)
{
if(XMLHttp.Status==200)
{
if(tt=XMLHttp.responseText)
{
login_err();
}
}
}
}


</script>

</head>
<body>
<form id="form1" runat="server">
<div id="floatdiv">

</div>


<br />
<br />
            用户名  <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
  <br />
<br />
             密码  <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
 <br />
<br />
                                 
 保存  <asp:DropDownList ID="DropDownList1" runat="server">
</asp:DropDownList>
<br />
<br />
                                   
<input name="button" type="button" value="登陆" onclick="js()" />
  <asp:Button ID="Button2" runat="server" Text="取消"
onclick="Button2_Click" />
<br />
<br />
<br />


</form>
服务器端代码如下:
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{

}

protected void Button2_Click(object sender, EventArgs e)
{
this.TextBox1.Text= "";
this.TextBox2.Text= "";

}

protected void rs(object sender, EventArgs e)
{
string UserName = Request["UserName"].ToString();
string PassWord = Request["PassWord"].ToString();
SqlConnection conn = new SqlConnection();
conn.ConnectionString = ConfigurationManager.ConnectionStrings["webtext"].ToString();

SqlCommand cmd = new SqlCommand();
cmd.CommandText = "select * from Hover_Admin where UserName='" + UserName + "' and Password='" + PassWord + "'";
cmd.Connection = conn;

SqlDataReader red = cmd.ExecuteReader();

if (red.Read())
{
Response.Write("1");
}

}



}
现在的问题是怎么向服务端传递参数,服务器又怎么样返回参数给客户端。高手指点一下。好像我写的有点问题?
...全文
354 36 打赏 收藏 转发到动态 举报
写回复
用AI写文章
36 条回复
切换为时间正序
请发表友善的回复…
发表回复
paulyjin 2008-11-05
  • 打赏
  • 举报
回复
这个浪曦有个视频教程的,你可以看下--我当时就是看了这个的
dys_198102 2008-11-05
  • 打赏
  • 举报
回复
求火狐浏览器兼容代码?哪位大虾知道发个。。。。。。
dys_198102 2008-11-05
  • 打赏
  • 举报
回复
多谢谢大家大力支持,解决了,贴出全部代码,每楼都散分,有功者居多。代码如下
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="login.aspx.cs" Inherits="_login" ClientTarget="UpLevel" %>

<!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>

<link type="text/css" rel="Stylesheet" href="css/da.css" />
<script language="javascript" type="text/javascript">

var pat=new RegExp("[^a-zA-Z0-9\_\u4e00-\u9fa5]","i");
function js()
{
if(pat.test(document.getElementById("TextBox1").value)==true)
{
alert('输入含有非法字符!');
document.getElementById("TextBox1").focus();
return false;
}
else
{
var s1=document.getElementById("TextBox1").value;
}

if(pat.test(document.getElementById("TextBox2").value)==true)
{
alert('输入含有非法字符!');
document.getElementById("TextBox2").focus();
return false;
}
else
{
var s2=document.getElementById("TextBox2").value;
}

var s3= document.getElementById("CheckCode").value;

if(document.getElementById("TextBox1").value==""||document.getElementById("TextBox2").value==""||s3=="")
{
alert("用户名、密码或验证码不能为空!");
document.getElementById("TextBox1").focus();
return false;
}
else
{
var res=_login.returns(s1,s2,s3);

if(res.value=="false")
{
alert("用户名或密码错误!");
document.getElementById("TextBox1").focus();
return false;
}else if(res.value=="dd")
{
alert("验证码错误!");
document.getElementById("CheckCode").focus();
return false;
}
else
{
window.location.href="a.aspx";
}
}
}
////function color_err()
////{
//// var name_=document.getElementById("floatdiv");
//// name_.innerHTML="用户名或密码不能为空!";
//// name_.style.color="red";
//// name_.style.fontWeight="bold";
////}
////function login_err()
////{
//// var name_=document.getElementById("floatdiv");
//// name_.innerHTML="用户名或密码错误!";
//// name_.style.color="red";
//// name_.style.fontWeight="bold";
////}--%>
</script>

</head>
<body>
<form id="form1" runat="server">
<div id="floatdiv">

</div>


<br />
<br />
            用户名  <input type="text" id="TextBox1" maxlength="16" name="TextBox1" />
  <br />
<br />
             密码  <input type="password" id="TextBox2" maxlength="16" name="TextBox2" />
             
 <br />
<br />
                                        
验证码



<input type="text" name="CheckCode" id="CheckCode" maxlength="5" />

<img src="Errimage.aspx" /><br />
<br />
                                   
<input name="submit" type="button" value="登陆" onclick="js()" />
<input name="reset" type="reset" value="取消" />     <a href="regedit.aspx">注册</a><br />
                   <br />
<br />


</form>
</body>
</html>
后台代码如下:
public partial class _login : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
AjaxPro.Utility.RegisterTypeForAjax(typeof(_login));

}

[AjaxPro.AjaxMethod]
public string returns(string s1,string s2,string s3)
{
string ma = Session["CheckCode"].ToString().ToLower();

string sqls = "SELECT Admin_name, Admin_PassWord FROM Hover_Admin WHERE Admin_name = '" + s1 + "' AND Admin_PassWord = '" + s2 + "'";

SqlConnection conn = new SqlConnection();
conn.ConnectionString = ConfigurationManager.ConnectionStrings["webtest"].ToString();
conn.Open();

SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = sqls;
SqlDataReader red = cmd.ExecuteReader();

if (red.Read())
{
if (s3.ToLower() != ma)
{
return s3 = "dd";
}
return s1 = "true";

}
else
{
return s2 = "false";
}

red.Dispose();
red = null;
conn.Close();
}




}
经调试,IE火狐都正常,现在结贴
Eagle_ice 2008-11-05
  • 打赏
  • 举报
回复
这个帖子居然顶到30多楼了 楼主有答案了吧
Go 旅城通票 2008-11-05
  • 打赏
  • 举报
回复
没注意看你的cs代码,方法修饰需要为public,要不不会生成对应的js方法

protected string returns()
{


===>>

public string returns()
{
dys_198102 2008-11-05
  • 打赏
  • 举报
回复
<body>
<form id="form1" runat="server">
这个代码是有啊。
Go 旅城通票 2008-11-05
  • 打赏
  • 举报
回复
你的aspx页面放有

<form runat="server" id="form1"></form>

的标记没有,如果没放入上面的html代码,不会生成js的
dys_198102 2008-11-05
  • 打赏
  • 举报
回复
发现如果自已写AJAX兼容问题很难解决又浪费时间,朋友介绍用AJAXPro2.0,但我按说明来做,就是不行。bin
里有Ajaxpro.2.dll,webconfig里配置如下:
<httpHandlers>
<add path ="Ajaxpro/*.ashx" verb="POST,GET" type="AjaxPro.AjaxHandlerFactory,AjaxPro.2"/>
</httpHandlers>

Defaule.aspx代码如下:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" ClientTarget="UpLevel" %>
<script language="javascript" type="text/javascript">
function js()
{

var url="logins.aspx?UserName=" + document.getElementById("TextBox1").value+"&PassWord="+ document.getElementById("TextBox2").value;

if(document.getElementById("TextBox1").value==""||document.getElementById("TextBox2").value=="")
{
alert("用户名或密码不能为空!");
}
else
{
var res=_Default.returns();出错的地方,在IE中显示对像不支持些属性和方法

if(res.value=="false")
{
alert("用户名或密码错误!");
}
else
{
window.location.href="a.aspx";
}
}
}
</script>
Default.aspx.cs 代码如下:
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
AjaxPro.Utility.RegisterTypeForAjax(typeof(_Default));

}

[AjaxPro.AjaxMethod]
protected string returns()
{
string sqls = "SELECT Admin_name, Admin_PassWord FROM Hover_Admin WHERE Admin_name = '" + Request.QueryString["UserName"].ToString() + "' AND Admin_PassWord = '" + Request.QueryString["PassWord"].ToString() + "'";


SqlConnection conn = new SqlConnection();
conn.ConnectionString = ConfigurationManager.ConnectionStrings["webtest"].ToString();
conn.Open();

SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = sqls;
SqlDataReader red = cmd.ExecuteReader();

if (red.Read())
{

return "true";
}
else
{
return "false";
}

cmd.Dispose();
cmd = null;
conn.Close();
}


}
好像代码没什么问题,怎么会出这样的错误。。。高手指点
Jarvis-Li 2008-11-04
  • 打赏
  • 举报
回复
做法没有错
dys_198102 2008-11-04
  • 打赏
  • 举报
回复
更换了成了以下代码
function createXmlHttpRequest()
{
if(window.ActiveXObject)
{
try
{
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e)
{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
}
if(window.XMLHttpRequest)
{
xmlHttp=new XMLHttpRequest();

if(xmlHttp.overrideMimeType)
{
xmlHttp.overrideMimeType("text/xml");
}
}


if(!xmlHttp)
{
window.alert("你的浏览器不支持创建XMLhttpRequest对象");
}

return xmlHttp;


}但在FF里还没有反应,红色部分是最容易出问题的,哪位高手指点指点
dys_198102 2008-11-04
  • 打赏
  • 举报
回复
FF下没有任何错误,就是没反应。可能是FF的XMLHTTP的那个对像没有创建正确
Go 旅城通票 2008-11-04
  • 打赏
  • 举报
回复
看代码没问题,ff下提示什么错误了????
dys_198102 2008-11-04
  • 打赏
  • 举报
回复
问题解决了,现在只有浏览器兼容问题了,IE能正常显示,火狐不能,其他的可能也不行。把正确代码贴出来,大家可以看看。default.aspx
<script language="javascript" type="text/javascript">

var xmlHttp;

function createXmlHttpRequest()
{
if(window.ActiveXObject)
{
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
else if(window.XMLHttpRequest)
{
xmlHttp = new XMLHttpRequest();
}

return xmlHttp;

}

function returnResult()
{
if(xmlHttp.readyState==4)
{
if(xmlHttp.Status==200)
{
if(xmlHttp.responseText=="0")
{
login_err();
}
else
{
window.location.href="a.aspx";
}
}

}
}

function js()
{


var url="logins.aspx?UserName=" + document.getElementById("TextBox1").value+"&PassWord="+ document.getElementById("TextBox2").value;

if(document.getElementById("TextBox1").value==""||document.getElementById("TextBox2").value=="")
{
color_err();
}
else
{
createXmlHttpRequest();
xmlHttp.open("GET", url, true);
xmlHttp.onreadystatechange = returnResult;
xmlHttp.send(null);
}
}

function color_err()
{
var name_=document.getElementById("floatdiv");
name_.innerHTML="用户名或密码不能为空!";
name_.style.color="red";
name_.style.fontWeight="bold";
}
function login_err()
{
var name_=document.getElementById("floatdiv");
name_.innerHTML="用户名或密码错误!";
name_.style.color="red";
name_.style.fontWeight="bold";
}


</script>

</head>
<body>
<form id="form1" runat="server">
<div id="floatdiv">

</div>


<br />
<br />
            用户名  <input type="text" id="TextBox1" name="TextBox1" />
  <br />
<br />
             密码  <input type="text" id="TextBox2" name="TextBox2" />
 <br />
<br />
                                 

<br />
<br />
                                   
<input name="submit" type="button" value="登陆" onclick="js()" />
<input name="reset" type="reset" value="取消" />
<br />
<br />
<br />


</form>
logins.aspx.cs
public partial class logins : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{

string sqls = "SELECT Admin_name, Admin_PassWord FROM Hover_Admin WHERE Admin_name = '" + Request.QueryString["UserName"].ToString() + "' AND Admin_PassWord = '" + Request.QueryString["PassWord"].ToString() + "'";


SqlConnection conn = new SqlConnection();
conn.ConnectionString = ConfigurationManager.ConnectionStrings["webtest"].ToString();
conn.Open();

SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = sqls;
SqlDataReader red = cmd.ExecuteReader();

if (red.Read())
{

Response.Write("1");
Response.End();
}
else
{
Response.Write("0");
Response.End();
}

cmd.Dispose();
cmd = null;
conn.Close();
}
}现在只要解决浏览器兼容问题。AJAX可以用了
dys_198102 2008-11-03
  • 打赏
  • 举报
回复
上边的问题已经解决,现在有新的AJAX问题,为什么没有向后台发送参数。if(XMLHttp.readyState==4)返回的是alert("readyState!=4");也就是说后台没有收到参数,以下是代码:
<script language="javascript" type="text/javascript">
function js()
{
var XMLHttp;
var UserName = document.getElementById("<%=this.TextBox1.ClientID %>").value;
var PassWord = document.getElementById("<%=this.TextBox2.ClientID %>").value;

function createXMLHttpRequest()
{
if(window.ActiveXObject)
{
XMLHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
else if(window.XMLHttpRequest)
{
XMLHttp=new XMLHttpRequest;
}
}
function returnResult()
{
if(XMLHttp.readyState==4)
{
if(XMLHttp.Status==200)
{
if(XMLHttp.responseText=="1")
{
login_err();
}
else
{
alert("没有返回文本");
}
}
else
{
alert("!=200");
}
}
else
{
alert("readyState!=4");返回的是这个。
}
}

if(document.getElementById("<%=this.TextBox1.ClientID %>").value==""||document.getElementById("<%=this.TextBox2.ClientID %>").value=="")
{
color_err();
}
else
{

createXMLHttpRequest();
XMLHttp.open("GET", "Default.aspx?UserName='" + UserName+"'&PassWord='"+PassWord+"'", true);
XMLHttp.setRequestHeader("content-type","text/xml");
XMLHttp.onreadystatechange = returnResult();
XMLHttp.send(null);

}
}

function color_err()
{
var name_=document.getElementById("floatdiv");
name_.innerHTML="用户名或密码不能为空!";
name_.style.color="red";
name_.style.fontWeight="bold";
}
function login_err()
{
var name_=document.getElementById("floatdiv");
name_.innerHTML="用户名或密码错误!";
name_.style.color="red";
name_.style.fontWeight="bold";
}


</script>
高手指点一下
qiqi1983731 2008-11-03
  • 打赏
  • 举报
回复
学习到了 顶
qq22345111 2008-11-03
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wxg22526451 的回复:]
XMLHttpRequest Ajax 实例
[/Quote]
ajax基本学习
eagle_2008 2008-11-03
  • 打赏
  • 举报
回复
up
Go 旅城通票 2008-11-03
  • 打赏
  • 举报
回复
第一
-----
xmlHttp=createXmlHttpRequest(); //=====================
xmlHttp.open("POST", url, true);
xmlHttp.onreadystatechange = returnResult/*()*/;//处理函数添加时错误
xmlHttp.send(null);


第二,你是xmlHttp.readyState==4时,就是状态为4时才执行下面红色部分

但是xmlHttp.readyState==1,xmlHttp.readyState==2,xmlHttp.readyState==3时就执行蓝色部分了,这个是不需要的

readyState可以有1,2,3,4种状态,具体对应什么我记不太清楚了 -_-!
--
function returnResult()
{
if(xmlHttp.readyState==4)
{
if(xmlHttp.Status==200)
{
if(xmlHttp.responseText=="0")
{
login_err();
}
else
{
window.location.href="a.aspx";
}
}
else
{
alert("!=200");
}
}
else
{
alert("readyState!=4");
}

}
dys_198102 2008-11-03
  • 打赏
  • 举报
回复
前面的问题解决了,不细心的结果,变量声明应先声明。不过JS只执行 alert("readyState!=4");这个。怎么解决这个问题???
Go 旅城通票 2008-11-03
  • 打赏
  • 举报
回复
楼主变量作用域没搞清楚,而且你也接受返回的参数

你的createXmlHttpRequest() 使用的变量为全局的,但是js()中的是局部的
,改成下面的
function createXmlHttpRequest() 
{
var xmlHttp;//====================
if(window.XMLHttpRequest)
{
xmlHttp=new XMLHttpRequest();

if(xmlHttp.overrideMimeType)
{
xmlHttp.overrideMimeType("text/xml");
}
}
else if(window.ActiveXObject)
{
try
{
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e)
{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
}
if(!xmlHttp)
{
window.alert("你的浏览器不支持创建XMLhttpRequest对象");
}
return xmlHttp;
}

function js()
{

var url="logins.aspx?UserName=" + document.getElementById("TextBox1").value+"&PassWord="+document.getElementById("TextBox2").value;
var url="logins.aspx?UserName='ffalse'&PassWord='ssss'";
var xmlHttp; ///===============


if(document.getElementById("TextBox1").value==""||document.getElementById("TextBox2").value=="")
{
color_err();
}
else
{
xmlHttp=createXmlHttpRequest(); //=====================
xmlHttp.open("POST", url, true);
xmlHttp.onreadystatechange = returnResult();
xmlHttp.send(null);
}
}
加载更多回复(16)

52,798

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Ajax
社区管理员
  • Ajax
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧