关闭

$.ajax()给全局变量赋值问题解决示例

3018人阅读 评论(0) 收藏 举报
分类:

今天在做项目时,遇到了一个问题。我用的是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');
      })
    }
}
1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:388060次
    • 积分:6282
    • 等级:
    • 排名:第3934名
    • 原创:266篇
    • 转载:507篇
    • 译文:0篇
    • 评论:12条
    最新评论