导航
  • 全部
...

ajax回调时的怪问题

hao_ljp 2009-06-30 04:05:53
//通过post方式请求数据
function callServerByPost(url,data,fun) {
var http_reques=null;
if (window.ActiveXObject){ // IE
try {
http_request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
http_request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}else if (window.XMLHttpRequest) { // Mozilla, Safari,...
http_request = new XMLHttpRequest();
if (http_request.overrideMimeType) {
http_request.overrideMimeType('text/xml');
}
}
if (!http_request) {
alert('Giving up :Cannot create an XMLHTTP instance');
return false;
}
http_request.onreadystatechange = fun;
http_request.open("POST", url, true);
http_request.setrequestheader("Content-length",data.length);
http_request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
try{
http_request.send(data);//传送资料
}catch(e){
alert("error");
}
}

function ajax_post(url,data) {
url=url+"?t="+new Date();
callServerByPost(url,data,function fns(){
if(http_request.readyState == 4) {
if (http_request.status == 200) {
return http_request.responseText;//在这里明明调试时http_request.responseText已经有值但是在外边却接收不到
} else {
alert("你请求数据有错");
}
}
});
}

function getData(){
var url="ajax_server.aspx";
var data="name=ljp&pwd=ljp";
var t=ajax_post(url,data);
alert(t);//在这里弹出undefined
}
</script>
-----------------------------------
不知道是不是ajax的问题还是
callServerByPost(url,data,function fns(){
if(http_request.readyState == 4) {
if (http_request.status == 200) {
return http_request.responseText;//在这里明明调试时http_request.responseText已经有值但是在外边却接收不到
} else {
alert("你请求数据有错");
}
}
});
这里写法问题,还请大家提示下怎么回事。

...全文
给本帖投票
462 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
看下面的文章,和你的描述一个样。。

为什么数组作为参数传递进去取不了值出来?
hao_ljp 2009-07-01
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 louis75168611 的回复:]
我晕,这年头还自己写ajax接口呢吗??

现在米其林的轮子都那么多了,还自己造木头轮子瞎轱辘呢吗?

用jquery吧。
[/Quote]


公司不让用框架没的法啊!自己写js好处还是很多的,什么东西都用别人写好的未必是好事。
  • 打赏
  • 举报
回复
我是说你的是异步的,在异步的情况下,在ajax未返回你alert当然是undefined

var t=ajax_post(url,data);

而且你的t是接受ajax_post的返回值的,但是ajax_post函数你并没有返回值,就是没有使用return语句返回任何信息,这样的话默认是返回undefined


我看看有时间整理下ajax的同步问题供大家参考下。。。
louis75168611 2009-06-30
  • 打赏
  • 举报
回复
我晕,这年头还自己写ajax接口呢吗??

现在米其林的轮子都那么多了,还自己造木头轮子瞎轱辘呢吗?

用jquery吧。
hao_ljp 2009-06-30
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 showbo 的回复:]
你那是异步啊,改成同步的

并且你的ajax_post也没有返回值
[/Quote]

怎么会不是异步呢,
callServerByPost(url,data,function fns(){
if(http_request.readyState == 4) {
if (http_request.status == 200) {
return http_request.responseText;//在这里明明调试时http_request.responseText有值的
} else {
alert("你请求数据有错");
}
}
});

就是ajax_post不能返回值不知道怎么回事,希望朋友说详细一点 谢谢

  • 打赏
  • 举报
回复
你那是异步啊,改成同步的

并且你的ajax_post也没有返回值

52,795

社区成员

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

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

手机看
关注公众号

关注公众号

客服 返回
顶部