解决ajax无法给js全局变量赋值的问题

在ajax中是无法给js中的全局变量赋值的,因为ajax默认是异步请求(当要赋值时,此时的值没有拿到,所以赋值不成功)。例如:

  1. function test(){
  2.   var result=0;
  3.   $.ajax({  
  4. type: "POST",  
  5. url: "ajax/checkfor1.php?action=reg_checkEmail",          
  6. data: {email:email},   
  7. dataType: 'text',     
  8. success: function(data){                                                      
  9. results=data;  
  10. },  
  11. error: function() {     
  12.                alert("异常!");    
  13.       }    
  14. });
  15. }

执行时会发现赋不进去值

解决办法1:将ajax请求设置为同步请求

  1. function test(){
  2.   var result=0;
  3.   $.ajax({  
  4. type: "POST",  
  5. url: "ajax/checkfor1.php?action=reg_checkEmail",          
  6. data: {email:email},   
  7. dataType: 'text',     
  8.  
  9.       async: false, //设置为同步请求
  10.  
  11. success: function(data){                                                      
  12. results=data;  
  13. },  
  14. error: function() {     
  15.                alert("异常!");    
  16.       }    
  17. });
  18. }

解决办法2:不使用js全局变量存数据而是用隐藏的html标签存数据

  1. function test(){
  2.   var result=0;
  3.   $.ajax({  
  4. type: "POST",  
  5. url: "ajax/checkfor1.php?action=reg_checkEmail",          
  6. data: {email:email},   
  7. dataType: 'text',     
  8. success: function(data){                                                      
  9.               $('#datastore').append('<div data='+data+'></div>');//使用一个div标签,定义一个自定义属性data来存储数据
  10. },  
  11. error: function() {     
  12.                alert("异常!");    
  13.       }    
  14. });
  15. }

猜你喜欢

转载自blog.csdn.net/lingdian1614114082/article/details/86527239
今日推荐