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
任何人都可以帮我吗?
答案 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一样,它将在同一范围内