代码改变世界

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

2018-04-09 10:32  ZealouSnesS  阅读(6128)  评论(0编辑  收藏  举报

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


http://blog.csdn.net/qq_26222859/article/details/51543433

 

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.       async: false, //设置为同步请求
  9. success: function(data){                                                      
  10. results=data;  
  11. },  
  12. error: function() {     
  13.                alert("异常!");    
  14.       }    
  15. });
  16. }

解决办法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. }