为什么使用ajax的时候alert不出来东西?

xujuan416 2007-07-10 01:48:47
代码如下

var __AjaxResult_text__;
var __Retrieve_req__;

function ajaxRequestText(URL)
{
__Retrieve_req__ = InitialRetrieve(__Retrieve_req);
if(__Retrieve_req__ == null){
alert("Error initializing XMLHttpRequest!");
}else{
__Retrieve_req__.open("POST", URL, true);
__Retrieve_req__.onreadystatechange = ajaxResponseText;
__Retrieve_req__.send(null);
}
alert(__AjaxResult_text__);
}

function ajaxResponseText()
{
var request = __Retrieve_req__;

if (request.readyState == 4)
{
if (request.status == 200)
{
__AjaxResult_text__ = request.responseText;
}
}
request = null;
}

请问调用ajaxRequestText(URL)时, 为什么执行alert(__AjaxResult_text__)时, alert的是undefined. __AjaxResult_text__这个全局变量已经在
ajaxResponseText()里赋值了啊,怎么解决呢?
...全文
1211 19 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
tygfr2008 2008-10-17
  • 打赏
  • 举报
回复
alert(__AjaxResult_text__);
把这个放response里面,还没赋值呢
cloudgamer 2008-10-17
  • 打赏
  • 举报
回复

function ajaxResponseText()
{
var request = __Retrieve_req__;

if (request.readyState == 4)
{
if (request.status == 200)
{
__AjaxResult_text__ = request.responseText;
alert(__AjaxResult_text__);
}
}
request = null;
}

这样试试
西安风影 2008-10-17
  • 打赏
  • 举报
回复
对于初学ajax的人来说
一定得把程序文件部署到web服务器上
直接本地双击打开肯定实现不了xmlhttp请求的
gabriel80 2008-10-17
  • 打赏
  • 举报
回复
window或者EXT
Jarvis-Li 2008-10-17
  • 打赏
  • 举报
回复
我自己都晕了都不知道说什么呢!反正就是先后运行的问题才会出现undefined
Jarvis-Li 2008-10-17
  • 打赏
  • 举报
回复
var   __AjaxResult_text__;
var __Retrieve_req__;

function ajaxRequestText(URL)
{
__Retrieve_req__ = InitialRetrieve(__Retrieve_req);
if(__Retrieve_req__ == null){
alert( "Error initializing XMLHttpRequest! ");
}else{
__Retrieve_req__.open( "POST ", URL, true);
__Retrieve_req__.onreadystatechange = ajaxResponseText;
__Retrieve_req__.send(null);
}
alert(__AjaxResult_text__);//这句不是在这面是在下面

}

function ajaxResponseText()
{
var request = __Retrieve_req__;

if (request.readyState == 4)
{
if (request.status == 200)
{
__AjaxResult_text__ = request.responseText;
alert(__AjaxResult_text__);//在这个位置就能出来值了

}
}
request = null;
}


因为它是先动行的ajaxRequestText有返回值进行ajaxResponseText并不是在运行ajaxRequestText中运
行的ajaxResponseText,也就是说不是ajaxResponseText完了运行的alert(__AjaxResult_text__);
所以为undefined
  • 打赏
  • 举报
回复
楼主没搞懂异步执行是什么吧???

时间差问题

如果要alert(__AjaxResult_text__);
为非undefined,指定为同步执行


//__Retrieve_req__.open( "POST ",   URL,   true); 
//=======>
__Retrieve_req__.open( "POST ", URL, false);

xuyanhaha123456 2008-10-15
  • 打赏
  • 举报
回复
用这个就行


ScriptManager.RegisterStartupScript(imgBtnLogin, this.GetType(), "warning","alert('用户名或密码错误!')",true);


imgBtnLogin表示激发对话框的BUTTON
xuyanhaha123456 2008-10-15
  • 打赏
  • 举报
回复
用这个就行


ScriptManager.RegisterStartupScript(imgBtnLogin, this.GetType(), "warning","alert('用户名或密码错误!')",true);


imgBtnLogin表示激发对话框的BUTTON
gaoliang0516 2008-10-15
  • 打赏
  • 举报
回复
这个问题搞了很久了!网上的方法也试了不少!但没一个好用的!只好用个标签来提示信息了!
chaircat 2007-09-12
  • 打赏
  • 举报
回复
你用的是异步模式,也就是send()会马上运行完,然后就是alert(),这时候根本就没有运行onreadystate委托,当然也就没给变量赋值
你把open最后的true改成false就有了
walksky2005 2007-09-12
  • 打赏
  • 举报
回复
楼主有答案告诉我一下,我也遇到了同样的问题。
xujuan416 2007-07-15
  • 打赏
  • 举报
回复
是的,__AjaxResult_text__ 现在已经是一个公共变量, 可是在另一个地方调用完ajaxRequestText(URL)之后还是取不到__AjaxResult_text__的值。
只有在
if (request.status == 200)
{
__AjaxResult_text__ = request.responseText;

alert(__AjaxResult_text__); //可以alert出值
}
可以alert出这个公共变量的值。
shenba 2007-07-15
  • 打赏
  • 举报
回复
现在存在共有变量里不行吗?
xujuan416 2007-07-12
  • 打赏
  • 举报
回复
怎么没有人回答了呢:(
很着急啊
xujuan416 2007-07-11
  • 打赏
  • 举报
回复
因为很多地方要调用, 所以就写在一个公用的地方然后返回结果了。
xujuan416 2007-07-11
  • 打赏
  • 举报
回复
哦, 多谢楼上两位了。
我的主要目的是想得到request.responseText, 然后把它返回给调用的地方。
这样的话应该做什么样的处理, 在什么地方返回呢?
zhulei2008 2007-07-10
  • 打赏
  • 举报
回复
申明了变量不等与赋值

何况你的ajaxResponseText方法是在赋值alert()前发生的,那时侯__AjaxResult_text__ 只是一个未赋值的变量,当然alert()不出来东西
zhulei2008 2007-07-10
  • 打赏
  • 举报
回复
if (request.status == 200)
{
__AjaxResult_text__ = request.responseText;

alert(__AjaxResult_text__); //在这alert试下
}

52,787

社区成员

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

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