我的环境是ajax+c#.net
我用iframe可以执行但是浏览器一直显示进度条我就想把它改成用ajax来连接
可是ajax一直只能连一下,不能取得服务器传来的消息我的代码是
服务器端protected override void Render(HtmlTextWriter writer)
{
base.Render(writer);
Response.Buffer = true;
bool isOutput = false; Response.Write(""); Response.Flush();
int lastsecond = 0;
while (Response.IsClientConnected)
{
Thread.Sleep(1000);
if (DateTime.Now.Second != lastsecond && !isOutput)
{ lastsecond = DateTime.Now.Second; String msg = "wait msg..."; Response.Write("{'msg':'" + msg + "'}");
Response.Flush();
isOutput = true;
}
else
{
isOutput = false;
} }
}
客户端
$.ajax(
{
timeout:1000*5,
async :false,
type: "get",
cache:true,
data:{t:1},
url: Cfg.ajaxUrl+"getMsg.aspx",
beforeSend: function(XMLHttpRequest)
{
//
},
success: function(data, textStatus)
{
alert(data.msg)
},
complete: function(XMLHttpRequest, textStatus)
{
//HideLoading();
alert(2)
},
error: function(XMLHttpRequest, textStatus, errorThrown)
{
//请求出错处理
alert(errorThrown)
}
});
不知道是服务端的问题 还上js的问题 知道的朋友帮帮忙,先谢谢各位 了
直接alert(data)呢?
加个dataType : "json",
应该就是你要的东西了.
function ConnectServer()
{
xmlhttp.open("POST",imCfg.ajaxUrl+"WebIM/getIMsg.aspx",true);//建立异步通信
//xmlhttp.setRequestHeader("Content-Type","multipart/x-mixed-replace;boundary;charset=utf-8");
var m=xmlhttp.send("当前浏览起的标识");
}
xmlhttp.onreadystatechange = function()
{
if(xmlhttp.readyState == 4)
{
//判断返回值是否正常
if(xmlhttp.status == 200)
{
//执行你的方法
var s=xmlhttp.responseText;//获取服务器发过来的信息
$('#ff').html(s)
//执行你处理该事件的相关代码
}
}
setTimeout(ConnectServer,100);//重新建立下一次连接
}
你调试一下.有没到你MSG那.
我在网上找了个php的comet 他的那个就没问题 不过我始终没搞明白是怎么回事,web.qq.com 他是也用ajax+push的 只是不知道怎么处理的
直接alert(data)又不行.证明没拿到数据.
把这段去掉试下