jquery中的$.post()中的回调函数中能设置外界参数的值吗?

$(function(){//获取表单元素设置其提交函数$.("#form").submit(function(){vart=false;$.post("login.ac... $(function(){
//获取表单元素设置其提交函数
$.("#form").submit(function(){
var t = false;
$.post(
"login.action",
{"id":id,"pwd":pwd},
function(data){
//传回来的值是true或false
if(data=="true"){
t = true;//修改外界t的值
alert(t);//此处如果程序能进来,t=true
}else{
t = false;//修改外界t的值
}
},"text"
);
alert(t);//即使data为true进入了if函数,但t值为什么不改变?t=false
return t;
});
)};
展开
 我来答
百度网友0fd6636
推荐于2016-01-02 · 超过20用户采纳过TA的回答
知道答主
回答量:105
采纳率:0%
帮助的人:55.3万
展开全部
你在页面有两个alert,,应该会出现两次才对。第一次应该是false,第二次应该由data来决定。因为你使用的是AJAX,默认是异步的,因此当代码执行到$.post()时,并不会等它结果,而是继续向下执行,到了第二个alert的位置,这时t应该还是最初你设定的var t = false;所以会显示false.

还有,alert()会中断正在执行的代码。不太方便测试某变量的值,你可以将此变量的值写入一个窗口内,比如将alert(t);改为$("title").html(t);//将t的值写进页面的title中,可以直接在浏览器看到。
追问
估计原因是这样的,回调函数中值确定已经改变,我试着改成同步试下
TableDI
2024-07-18 广告
仅需3步!不写公式自动完成Excel vlookup表格匹配!Excel在线免,vlookup工具,点击35步自动完成表格匹配,无需手写公式,免费使用!... 点击进入详情页
本回答由TableDI提供
如同神一般菜鸟
2013-05-30 · TA获得超过633个赞
知道小有建树答主
回答量:589
采纳率:100%
帮助的人:345万
展开全部
因为你这个是匿名函数的原因吧。

你试着把那段代码提出来作为一个函数试试。
同时把var t提出来到 $(function...外面。
更多追问追答
追问
提取函数为function f(){},然后在action标签的onsubmit="return f();"效果还是一样的,没用啊
追答
不是,是把下面这个提取出去

function(data){
//传回来的值是true或false
if(data=="true"){
t = true;//修改外界t的值
alert(t);//此处如果程序能进来,t=true
}else{
t = false;//修改外界t的值
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
卷心菜92
2013-05-30 · TA获得超过840个赞
知道小有建树答主
回答量:860
采纳率:0%
帮助的人:462万
展开全部
变量scope的关系。
修改方法,把var t = false;放到函数外部,作为全局变量
更多追问追答
追问
我也试过了,还是一样,变量结果在post回调函数内可以改变,出了post后就自动变回去了
追答
var t = false;

$(function(){
//获取表单元素设置其提交函数
$.("#form").submit(function(){
$.post(
"login.action",
{"id":id,"pwd":pwd},
function(data){
//传回来的值是true或false
if(data=="true"){
t = true;//修改外界t的值
alert(“t changed to true");//此处如果程序能进来,t=true
}else{
t = false;//修改外界t的值
}
},"text"
);
alert(t);//即使data为true进入了if函数,但t值为什么不改变?t=false
return t;
});
)};

你确定试过了?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
dk19890925
2013-06-06
知道答主
回答量:7
采纳率:0%
帮助的人:3.3万
展开全部
骚年 研究一下闭包哇
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式