2014-02-19 28 views
0

我有一个全局变量var emp_error = 0; 但是当我访问emp_error时,即使它通过其他(因为tr的bg颜色改变),emp_error仍然是0. 有人可以帮我吗?因此,如果它已经存在使用AJAX/JQuery无法访问全局变量

$.ajax({ 
    type: "POST", 
    url: "<?php echo site_url('c_device/check_empId'); ?>", 
    data: dataString, 
    dataType: 'json', 
    cache: false, 
    success: function(data){ 
       console.log(data); 
       if(data.length == 0){ 
        emp_error=0; 
       }else{ 
        $("#error_"+tr_id).html("Emp id exists");  
        $("#"+tr_id).css("background-color","red");     
        emp_error++; 
       }     
    } 
}); 
+0

这里是另一个SO发布链接到类似的东西http://stackoverflow.com/questions/15795831/jquery-ajax-local-variable-cant-assign-to-global – HackerKarma

+0

如果你的var emp_error实例化的值为0为什么你有if语句吗?这不够吗? if(data.length){(“#error _”+ tr_id).html(“Emp id exists”); $(“#”+ tr_id).css(“background-color”,“red”); emp_error + = 1; }' –

+0

哦,并避免使用此操作'your_var ++;'http://stackoverflow.com/questions/971312/why-avoid-increment-and-decrement-operators-in-javascript –

回答

0

假设你想emp_error在多个呼叫增加它不会更新员工ID,您需要一)不重置为0的时候失败了,和b)之外定义它如果第一次调用不为空,那么emp_error++有一些增量。

定义包含ajax调用的函数的全局外部。

演示:http://jsfiddle.net/5h9pL/

如果你将不会作出多个呼叫,其实只是想emp_error当员工被发现设置,不乱用全局可言:

 if(data.length == 0){ 
      emp_error = 0; 
     }else{ 
      $("#error_"+tr_id).html("Emp id exists");  
      $("#"+tr_id).css("background-color","red");     
      emp_error = 1; 
     }