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;
});
)}; 展开
//获取表单元素设置其提交函数
$.("#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;
});
)}; 展开
4个回答
展开全部
你在页面有两个alert,,应该会出现两次才对。第一次应该是false,第二次应该由data来决定。因为你使用的是AJAX,默认是异步的,因此当代码执行到$.post()时,并不会等它结果,而是继续向下执行,到了第二个alert的位置,这时t应该还是最初你设定的var t = false;所以会显示false.
还有,alert()会中断正在执行的代码。不太方便测试某变量的值,你可以将此变量的值写入一个窗口内,比如将alert(t);改为$("title").html(t);//将t的值写进页面的title中,可以直接在浏览器看到。
还有,alert()会中断正在执行的代码。不太方便测试某变量的值,你可以将此变量的值写入一个窗口内,比如将alert(t);改为$("title").html(t);//将t的值写进页面的title中,可以直接在浏览器看到。
追问
估计原因是这样的,回调函数中值确定已经改变,我试着改成同步试下
TableDI
2024-07-18 广告
2024-07-18 广告
VLOOKUP 是 Excel 中一个非常实用的函数,它允许用户在一个区域或表格的首列中查找特定值,并返回同一行中指定列中的值。当进行跨表匹配时,你可以使用 VLOOKUP 函数将两个不同表格中的数据关联起来。通过指定查找值、表格数组、列号...
点击进入详情页
本回答由TableDI提供
展开全部
因为你这个是匿名函数的原因吧。
你试着把那段代码提出来作为一个函数试试。
同时把var t提出来到 $(function...外面。
你试着把那段代码提出来作为一个函数试试。
同时把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的值
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
变量scope的关系。
修改方法,把var t = false;放到函数外部,作为全局变量
修改方法,把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;
});
)};
你确定试过了?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询