前端$.ajax()给全局变量赋值问题解决。

今天在做项目时,遇到了一个问题。我用的是ajax,要在$.ajax({里面给一个全局变量赋值,结果死活赋值不上,纠结了好半天,后来上网查了查,才知道,ajax默认是异步请求,(当要赋值时,此时的值没有拿到,所以赋值不成功)如果要在$.ajax({里面给全局变量赋值,需要改为同步操作,即加上async : false,就可以了。

复制代码 代码如下:


$.ajax({ 
type:"post", 
url:"a.action", 
data: {}, 
dataType: 'text', 
async : false,//设置为同步操作就可以给全局变量赋值成功 
success:function(data){ 
usersname = data;//usersname为前面声明的全局变量 

});

 以下是自己写的异步验证用户名是否存在的代码

 
  1. var results;

  2.  
  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. return false;

  12. },

  13. error: function() {

  14.  
  15. alert("异常!");

  16. }

  17. });

  18. if(results==0){

  19. ShowTips("用户名已经存在");

  20. return false;}

以下是网上找的代码

 原文链接:https://segmentfault.com/q/1010000000334467

 
  1. var coordinates = (function() {

  2. var result;

  3. $.ajax({

  4. type:'POST',

  5. url:'/json',

  6. dataType:'json',

  7. data:{cmd:'coordinates'},

  8. async:false,

  9. success:function(data){

  10. result = data;

  11. }

  12. });

  13. return result;

  14. })();

  15.  
  16. $(document).ready(function(){

  17. if(coordinates.length) {//初始化页面,把所有坐标列一个列表

  18. $.each(coordinates, function(index,term) {

  19. var $item = $('<li class="item"></li>').text('坐标:'+term[0] + ',' + term[1]).appendTo('#list');

  20. })

  21. }

  22. }

猜你喜欢

转载自blog.csdn.net/isharry/article/details/81236931