今天在做项目时,遇到了一个问题。我用的是ajax,要在$.ajax({里面给一个全局变量赋值,结果死活赋值不上,纠结了好半天,后来上网查了查,才知道,ajax默认是异步请求,(当要赋值时,此时的值没有拿到,所以赋值不成功)如果要在$.ajax({里面给全局变量赋值,需要改为同步操作,即加上async : false,就可以了。
复制代码 代码如下:
$.ajax({
type:"post",
url:"a.action",
data: {},
dataType: 'text',
async : false,//设置为同步操作就可以给全局变量赋值成功
success:function(data){
usersname = data;//usersname为前面声明的全局变量
}
});
以下是自己写的异步验证用户名是否存在的代码
-
var results;
-
$.ajax({
-
type: "POST",
-
url: "ajax/checkfor1.php?action=reg_checkEmail",
-
data: {email:email},
-
dataType: 'text',
-
async: false,
-
success: function(data){
-
results=data;
-
return false;
-
},
-
error: function() {
-
alert("异常!");
-
}
-
});
-
if(results==0){
-
ShowTips("用户名已经存在");
-
return false;}
以下是网上找的代码
原文链接:https://segmentfault.com/q/1010000000334467
-
var coordinates = (function() {
-
var result;
-
$.ajax({
-
type:'POST',
-
url:'/json',
-
dataType:'json',
-
data:{cmd:'coordinates'},
-
async:false,
-
success:function(data){
-
result = data;
-
}
-
});
-
return result;
-
})();
-
$(document).ready(function(){
-
if(coordinates.length) {//初始化页面,把所有坐标列一个列表
-
$.each(coordinates, function(index,term) {
-
var $item = $('<li class="item"></li>').text('坐标:'+term[0] + ',' + term[1]).appendTo('#list');
-
})
-
}
-
}