2010-04-22 55 views
1
function checkauth(){ 
     jQuery.getJSON("https://stackoverflow.com/users/checkauthjson", null, function(xhr){ 
      if(xhr.success){ return true;}else{ return false;} 
      }); 
    } 

很明显,这不起作用,但它说明了我想实现的目标。我希望checkauth返回一个对ajax服务器脚本进行检查的值。jquery ajax回调出功能范围

我该怎么做?

回答

1

getJson()默认是一种异步方法,所以如果不做一些调整就不能依赖它。 使用.ajax()函数,将异步参数设置为false,然后将结果赋给范围在checkAuth()函数中的var。

事情是这样的:

function ceckAuth() { 
    var ret = false; 
    $.ajax({ 
    url: '/users/checkauthjson', 
    dataType: 'json', 
    data: '', 
    async: false, 
    success: function(result) { ret = result.success; }, 
    error: ... 
    }); 
    return ret; 
} 
+0

注意,你页面会毫无反应,而AJAX请求是在进步,因为它现在是同步的。 – Matt 2010-04-22 15:54:03

+0

谢谢,伙计。我完全忘了Ajax代表什么。 – vasion 2010-04-23 08:56:03