2010-04-22 2 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 callback из функции scope

Как это сделать?

ответ

1

getJson() по умолчанию является асинхронным методом, поэтому вы не можете полагаться на него без каких-либо корректировок. Используйте функцию .ajax(), установив async param в false, а затем присвойте результат var, область которого находится в функции checkAuth().

Что-то вроде этого:

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

+0

спасибо, мужчина. Я совершенно забыл, что такое A в Ajax. – vasion

Смежные вопросы