jquery.post中return值的问题

dulieo 2009-08-20 02:03:29

function checkName(){

alert("a1");

s = $("#name").attr('value');
if (!s){
$("#tips").html("请输入名称");
$("#tips").fadeIn();
return false;
}
var url="ajax/isExsit.asp";
$.post(url, {str:escape(s) }, function (data){
if (data=="false"){
$("#tips").html("该名称已经存在");
$("#tips").fadeIn();
return false;
}else{
$("#tips").fadeOut();
return true;
}

alert("a2");

});

alert("a3");

};

////

r=checkName();



上述代码中r接收不到$.post CallBack里面的return值,
正常的alert顺序应该是a1,a2,a3
执行的时候却是a1,a3,a2
这是为什么?
...全文
675 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
cyhcyhhychyc 2009-08-21
  • 打赏
  • 举报
回复
ajax请求需要时间的,
hookee 2009-08-20
  • 打赏
  • 举报
回复
var r=true;写在check外面,作为全局变量
var r=true;
function check(){

}

另外
result=checkName(); 可能先执行的,因为没法控制回调函数的触发时间, 不应该这么做.
dulieo 2009-08-20
  • 打赏
  • 举报
回复
to hookee:


function checkName(){

var r=true;

s = $("#name").attr('value');
if (!s){
$("#tips").html("请输入名称");
$("#tips").fadeIn();
r=false;
}
var url="ajax/isExsit.asp";
$.post(url, {str:escape(s) }, function (data){
if (data=="false"){
$("#tips").html("该名称已经存在");
$("#tips").fadeIn();
r=false;
}else{
$("#tips").fadeOut();
}});

return r;

};

////

result=checkName();



当页面上显示“该名称已经存在”时(执行了if (data=="false"){}语句块),result=checkName()的值还是true,r=false;的值没有传出到外面

checkName()函数的主要功能是当 ajax检测到 名称已经存在 时,checkName()返回一个false,反之,返回ture。

现在我的程序看起来好像是先执行了 函数尾部的 return r;然后才执行$.post callback里面对r的赋值。导致返回的r的值没有发生改变。

不知道我有没有说清楚。。
hookee 2009-08-20
  • 打赏
  • 举报
回复
callback返回的值不是check()的返回值,是不同的函数

$.post(url, {str:escape(s) }, function (data){
if (data=="false"){
$("#tips").html("该名称已经存在");
$("#tips").fadeIn();
r = false;
return false;
}else{
$("#tips").fadeOut();
r = true;
return true;
}

alert("a2");

});
dulieo 2009-08-20
  • 打赏
  • 举报
回复
那个 alert 是用来查看执行顺序的,我主要是要取得callback里面的return值(true/false),
r=checkName();
现在的情况是r=undefine取不到值,我应该怎么办?
hookee 2009-08-20
  • 打赏
  • 举报
回复
ajax是异步调用的。alert(a3)的时候 a2所在的回调函数还没被触发
如果要 a2, a3的话,应该在回调函数中触发alert(a3)

52,797

社区成员

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

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