无法在jquery之外访问var

时间:2010-12-06 11:20:24

标签: javascript jquery

var = msg
$.get('json-signup-erros.php',{},function(data){msg=data},'json');

function focushint()
{
   alert (msg) // this works
}
$("input").focus(focus);

 alert(msg) //this doesnot work

任何人都可以帮我吗?

3 个答案:

答案 0 :(得分:8)

您正在发出异步的AJAX请求。

只有在请求发出后,

msg才会包含该值。

您应该将使用msg的代码放入Ajax请求的success回调(function(data))。

(理论上可以使用async: false使请求同步,但这不是一种好的做法,只有在不可避免的情况下才能使用。)

答案 1 :(得分:0)

我同意Pekka - 你需要考虑这样的事情:

var = msg;

$.get('json-signup-erros.php',{}, function(data, response)
{
   if(response == "success")
   {
       msg = data;
       alert(msg);
   }
   else
   {
       alert("Whoops something went wrong, please try again.");
   }
},'json');

function focushint()
{
   alert (msg); // this works
}

$("input").focus(focushint);

NB。我在$ .get中进行了“成功”检查......我一直看到这一点 - 你不应该假设你的Ajax Http请求会返回200响应!即如果由于错误(404,500,401)没有返回数据,则无法提醒它,您可能想通过添加else子句警告用户出现问题。

答案 2 :(得分:0)

var = msg;  

$.get('json-signup-erros.php',{}, function(data, response) 
{ 
   if(response == "success") 
   { 
       msg = data; 
       alert(msg); 
   } 
   else 
   { 
       alert("Whoops something went wrong, please try again."); 
   } 
},'json'); 

function focushint() 
{ 
   alert (msg); // this works 
} 

$("input").focus(focushint);
alert(msg); // this is still does not work

如果你想访问jc函数之外的msg,就像focushin一样,它将在同一范围内