您好我有一个全局变量“usuario”,我想把它从$ .post函数中得到一个值,但是不起作用。变量保持其原始值。我做了一个测试,我发出警报(usuario);进入函数并且它起作用,警报显示函数的值。以下代码:
<script type="text/javascript" >
var usuario="";
$.post("cargarDatos.php",{},function(r){
usuario = r;
alert(usuario);
});
if(usuario !== "Nada"){
document.write("El usuario conectado es: "+usuario);
document.title="Actividad de "+usuario;
}else{
document.write("No hay usuario conectado!");
}
</script>
答案 0 :(得分:1)
$ .post()是异步的。在从服务器返回请求响应并调用回调函数之后发出警报。同时,脚本在回调实际发生之前已经运行了if语句。 在if else块中添加一些警报,你可以看到发生的事情的顺序。
答案 1 :(得分:1)
Ajax是异步的,你的处理逻辑会在ajax回调之前执行。所以你需要在ajax回调发生后进行处理。
试试这种方式。
function CallAjax(callback)
{
$.post("cargarDatos.php",{},function(r){
callback(r); //pass in the result
});
function MakeCallProcessResult
{
CallAjax(myCallBack);
}
function myCallBack(usuario )
{
alert(usuario);
if(usuario !== "Nada"){
document.write("El usuario conectado es: "+usuario);
document.title="Actividad de "+usuario;
}else{
document.write("No hay usuario conectado!");
}
}
答案 2 :(得分:0)
$.post
调用是异步的,并且在您执行if
数据块时,您没有usuario
变量带有值(因为它是&#39; s空)。
您可以将if
和else
块放入回调中,或创建其他功能并在回调到$.post
时调用它,以正确获取usuario
变量具有预期的价值。
你需要一些代码吗?
祝你好运。