中国建设银行招聘网站甘肃分行,久久租房网,百度正版下载并安装,wordpress 网店做前后台交互时会经常用到 ajax#xff0c;有时候会遇到这样的情况#xff0c;我们在 a 方法中调用 b 方法#xff0c;b 方法里是一个 ajax#xff0c;成功请求后会返回一个结果 data#xff0c;而我们希望通过 b 方法的返回值获取到 data#xff0c;我们的代码可能是这样…做前后台交互时会经常用到 ajax有时候会遇到这样的情况我们在 a 方法中调用 b 方法b 方法里是一个 ajax成功请求后会返回一个结果 data而我们希望通过 b 方法的返回值获取到 data我们的代码可能是这样的
function a() {var data b();
}function b() {$.ajax({type : GET,url : ,dataType : json,success : function (data) {return data;}});
}
但是这样直接在 ajax 中的 success 方法里写 return data 是不能达到预期效果的其实上面的过程相当于如下的代码
function a() {var data b();
}function b() {ajax();
}function ajax() {success(); //成功时调用success方法
}function success() {return data;
}
调用 ajax 时可以看做调用了一个叫 ajax 的方法当成功的时候ajax 会再调用一个叫 success 的方法可以看到此时 data 只是被 return 到 ajax 方法中而 ajax 并没有继续向外 return所以通过 ajax 中 success 方法获取到的返回结果只是存在于 ajax 内部b 方法并不知情。
因此如果希望 b 能返回 data只需把 data 赋值给 b 中的一个变量再在 ajax 之后返回这个变量即可
function a() {var data b();
}function b() {var result;$.ajax({type : GET,url : ,dataType : json,async : false,success : function (data) {result data;}});return result;
}不过需要注意的是ajax 中需要把 async 属性设置为 falseasync 的意思是异步设置为 false就代表这个 ajax 不再是异步的而是同步的。同步异步有什么区别呢在这个问题中如果是异步的则可能 ajax 还没有执行到 success 方法后面的 return result 就已经执行了也就获取不到 data 了。而如果设置为同步那么 ajax 后面的代码就会等待 ajax 执行完毕才执行这样 return result 就是已经赋过值的了。