用ajax实现如下功能:
用ajax向页面C_S_Talk.aspx发送HTTP Request然后把返回的HTTPRequest.ResponceText显示出来。我设了一个客户端的按钮(不回传的),每按一次就做一次上面的过程。代码如下:
C_S_Talk.aspx.cx的代码:
省略,功能测试后是完好的,总之是会返回一个字符串,根据当前时间的不同会返回不同的字符串,问题跟这个后台代码关系不大ajax引擎代码:function send_request(url,readystatechange)
{//初始化、指定处理函数、发送请求的函数
http_request = false;
//开始初始化XMLHttpRequest 对象
if(window.XMLHttpRequest)
{ //Mozilla 浏览器
http_request = new XMLHttpRequest();
if (http_request.overrideMimeType)
{//设置MiME 类别
http_request.overrideMimeType("text/xml");
}
}
else if (window.ActiveXObject)
{ // IE 浏览器
try
{
http_request = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
try
{
http_request = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e) {}
}
}
if (!http_request)
{ //异常,创建对象实例失败
window.alert("不能创建XMLHttpRequest 对象实例.");
return false;
}
http_request.onreadystatechange = readystatechange;
//确定发送请求的方式和URL 以及是否同步执行下段代码
http_request.open('GET', url, true);
http_request.send(null);
}Ajax返回值处理函数:function processRequest()
{
if (http_request.readyState == 4)
{ // 判断对象状态
if (http_request.status == 200)
{ // 信息已经成功返回,开始处理信息
var l_newMessage = http_request.responseText;
if ((l_newMessage != "")&&(l_newMessage != null))
{
//播放声音
//playSound("http://223.223.217.37/Sound/newalert.wma");
var l_SoundControl = document.getElementById("soundControl");
l_SoundControl.play();
// //确定滚动条位置
// var l_form_scrollposition = document.getElementById("Panel2").scrollTop;
var l_form_innerHtml = document.getElementById("Label2").innerHTML;
if (l_form_innerHtml != "")
{
l_form_innerHtml = l_form_innerHtml.replace("<table>","");
l_form_innerHtml = l_form_innerHtml.replace("</table>","");
}
document.getElementById("Label2").innerHTML = "<table>" + l_form_innerHtml + "</table>" + "<table>" + l_newMessage + "</table>";
if (l_newMessage != "")
{
//把滚动条置到最下方
document.getElementById("Panel2").scrollTop = document.getElementById("Panel2").scrollHeight;
}
// else
// {
// //滚动条在原地不动
// document.getElementById("Panel2").scrollTop = l_form_scrollposition;
// }
//把焦点置回TextBox1
document.getElementById("TextBox1").focus();
}
}
else
{ //页面不正常
alert("您所请求的页面有异常。");
}
}
}Ajax引擎调用函数:function GetNewMessage()
{
// String l_LastChatTime = "2008-06-22 17:34:43";
// send_request('Custom_Support_Char_Support.aspx?LastChatTime=' + l_LastChatTime);
var l_View3Activited = document.getElementById("Text4").value.toString();
if (l_View3Activited == "View4")
{
var l_DID = document.getElementById("Text1").value.toString();
var l_MYID = document.getElementById("Text2").value.toString();
var l_ComID = document.getElementById("Text3").value.toString();
send_request('C_S_Talk.aspx?DialogID=' + l_DID + '&MyID=' + l_MYID + '&CompanyID=' + l_ComID,processRequest);
}
}按钮执行函数:function trytry()
{
GetNewMessage();
}按钮代码:
<input ID="Button1" type="button" value="button" onclick="trytry()"/>出现的异常问题描述:
第一次按按钮,一切正常,C_S_Talk后台代码被顺利执行,值顺利返回并显示,第一次http_request.responseText的值暂记为string1
第二次按按钮,异常,通过代码跟踪发现C_S_Talk未被执行,http_request.responseText的值依旧是第一次的值,并没有发生变化。
往后的每一次按按钮都不再执行C_S_Talk后台代码,http_request.responseText的值永远保持第一次的值不变请问高手这是怎么回事〉?是不是在处理完返回值后对HTTPRequest要做一些什么处理?否则它就不再起作用?
用ajax向页面C_S_Talk.aspx发送HTTP Request然后把返回的HTTPRequest.ResponceText显示出来。我设了一个客户端的按钮(不回传的),每按一次就做一次上面的过程。代码如下:
C_S_Talk.aspx.cx的代码:
省略,功能测试后是完好的,总之是会返回一个字符串,根据当前时间的不同会返回不同的字符串,问题跟这个后台代码关系不大ajax引擎代码:function send_request(url,readystatechange)
{//初始化、指定处理函数、发送请求的函数
http_request = false;
//开始初始化XMLHttpRequest 对象
if(window.XMLHttpRequest)
{ //Mozilla 浏览器
http_request = new XMLHttpRequest();
if (http_request.overrideMimeType)
{//设置MiME 类别
http_request.overrideMimeType("text/xml");
}
}
else if (window.ActiveXObject)
{ // IE 浏览器
try
{
http_request = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
try
{
http_request = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e) {}
}
}
if (!http_request)
{ //异常,创建对象实例失败
window.alert("不能创建XMLHttpRequest 对象实例.");
return false;
}
http_request.onreadystatechange = readystatechange;
//确定发送请求的方式和URL 以及是否同步执行下段代码
http_request.open('GET', url, true);
http_request.send(null);
}Ajax返回值处理函数:function processRequest()
{
if (http_request.readyState == 4)
{ // 判断对象状态
if (http_request.status == 200)
{ // 信息已经成功返回,开始处理信息
var l_newMessage = http_request.responseText;
if ((l_newMessage != "")&&(l_newMessage != null))
{
//播放声音
//playSound("http://223.223.217.37/Sound/newalert.wma");
var l_SoundControl = document.getElementById("soundControl");
l_SoundControl.play();
// //确定滚动条位置
// var l_form_scrollposition = document.getElementById("Panel2").scrollTop;
var l_form_innerHtml = document.getElementById("Label2").innerHTML;
if (l_form_innerHtml != "")
{
l_form_innerHtml = l_form_innerHtml.replace("<table>","");
l_form_innerHtml = l_form_innerHtml.replace("</table>","");
}
document.getElementById("Label2").innerHTML = "<table>" + l_form_innerHtml + "</table>" + "<table>" + l_newMessage + "</table>";
if (l_newMessage != "")
{
//把滚动条置到最下方
document.getElementById("Panel2").scrollTop = document.getElementById("Panel2").scrollHeight;
}
// else
// {
// //滚动条在原地不动
// document.getElementById("Panel2").scrollTop = l_form_scrollposition;
// }
//把焦点置回TextBox1
document.getElementById("TextBox1").focus();
}
}
else
{ //页面不正常
alert("您所请求的页面有异常。");
}
}
}Ajax引擎调用函数:function GetNewMessage()
{
// String l_LastChatTime = "2008-06-22 17:34:43";
// send_request('Custom_Support_Char_Support.aspx?LastChatTime=' + l_LastChatTime);
var l_View3Activited = document.getElementById("Text4").value.toString();
if (l_View3Activited == "View4")
{
var l_DID = document.getElementById("Text1").value.toString();
var l_MYID = document.getElementById("Text2").value.toString();
var l_ComID = document.getElementById("Text3").value.toString();
send_request('C_S_Talk.aspx?DialogID=' + l_DID + '&MyID=' + l_MYID + '&CompanyID=' + l_ComID,processRequest);
}
}按钮执行函数:function trytry()
{
GetNewMessage();
}按钮代码:
<input ID="Button1" type="button" value="button" onclick="trytry()"/>出现的异常问题描述:
第一次按按钮,一切正常,C_S_Talk后台代码被顺利执行,值顺利返回并显示,第一次http_request.responseText的值暂记为string1
第二次按按钮,异常,通过代码跟踪发现C_S_Talk未被执行,http_request.responseText的值依旧是第一次的值,并没有发生变化。
往后的每一次按按钮都不再执行C_S_Talk后台代码,http_request.responseText的值永远保持第一次的值不变请问高手这是怎么回事〉?是不是在处理完返回值后对HTTPRequest要做一些什么处理?否则它就不再起作用?
解决方案 »
- 页面里特殊符号问题
- 性能问题
- 有关一个FCKeditor编辑器的问题,熟人的高手请入
- 如何让Asp.Net检测到非法访问后不自动要求重新登录
- 这样的功能怎么实现?最好能给个例子,谢先......
- 急,急,急---如何释放ASP.NET中所定义使用的公共变量?
- datagrid是否真的在显示数据时比较慢?
- asp.net 开发的网站,页面里使用jquery下的AJAX ,在VS2005下调试正常,部署到IIS6下就不行了 求解答
- 从数据库中下载文件(不用保存路径的方法)
- 那位大侠来帮帮我(关于定制服务器控件)
- 提取dataset中的一段记录,这个怎么弄啊?
- 用WINDOWS.OPEN方式要开的页面中不能联动
问题的根源是使用的GET方法,所以IE把返回串缓存了
改为POST就好了
问题已经解决。