синоним api Ajax обратный звонок - PullRequest
0 голосов
/ 24 февраля 2011

Некоторое время боролись с этим призывом, но я не могу заставить его работать.dataToReturn по-прежнему возвращает Error, а не вызванные данные.Что я делаю не так?

function get_translation(search) {
    search = search.replace(/(<([^>]+)>)/ig, "").toLowerCase();
    original = search;
    google.language.translate( original ,  'en', 'sv', 
    function(result) {
        translated = result.translation;
        $("#results").html('<li class="ui-li-has-icon ui-li ui-li-static ui-btn-up-c" role="option" tabindex="0">'+ translated + '</li>')   
    });
};

function get_synonyms(items) { 



var dataToReturn = "Error";  

$.ajax({
    url: 'http://words.bighugelabs.com/api/1/xxx/' + items+ '/json',
    type: 'GET',
    dataType: 'jsonp',
    async: false,
    cache: false,
    success: function(data) {

       dataToReturn = data;
    }
});


return dataToReturn;

}


$('#results').delegate("li", "tap", function(){
    myDate = new Date();
    displayDate = myDate.getDate() + "/" + myDate.getMonth()+1 + "/" + myDate.getFullYear();
    id = myDate.getTime();

    var wordObject = {'id' : id, 'date': displayDate, 'translated': translated, 'original': original, 'nmbr': "0", 'syn': get_synonyms('hello')};
    save_terms(wordObject);
    loopItems() ;
    $("#results").html("");
    $("#addField").val("");
    // location.reload(true);
}); 

1 Ответ

0 голосов
/ 24 февраля 2011

Это потому, что строка return dataToReturn выполняется до завершения вызова AJAX. Когда вы звоните $.ajax, браузер говорит: «Хорошо, я просто перейду к следующему пункту, пока я жду, что это вернется ко мне».

Самый простой способ исправить это - изменить функцию success так, чтобы она действительно делала то, что вы пытаетесь сделать с dataToReturn. Но если это нереально, тогда больше контекста поможет найти лучший ответ.

...