【问题标题】:synonym api Ajax call return同义词 api Ajax 调用返回
【发布时间】:2011-02-24 18:07:50
【问题描述】:

已经为这个电话苦苦挣扎了一段时间,但我无法让它工作。 dataToReturn 仍然返回错误而不是调用的数据。我做错了什么?

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);
}); 

【问题讨论】:

    标签: ajax call return


    【解决方案1】:

    这是因为在 AJAX 调用完成之前正在执行 return dataToReturn 行。当您拨打 $.ajax 时,浏览器会说:“好的,我会继续做下一件事,等待它回复我。”

    解决此问题的最简单方法是将success 函数更改为实际执行您尝试对dataToReturn 执行的操作。但如果这不是真的可行,那么更多的上下文将有助于提出更好的答案。

    【讨论】:

    • 我认为异步阻止了“继续前进”的发生?
    • @Mattias 当你在成功函数中去掉 return 而只是 alert(dataToReturn) 会发生什么?
    • 然后我得到了字符串。但我必须退货。我正在尝试这个 var wordObject = {'words' : get_synonyms(var)};
    • @Mattias 好吧,我完全错了。当我实际尝试您的代码时,它运行良好。同样,可能需要更多上下文。
    • @Mattias 也许问题出在dataType: 'jsonp' 上?如果将其更改为 json 会发生什么?
    猜你喜欢
    • 1970-01-01
    • 2018-02-20
    • 1970-01-01
    • 1970-01-01
    • 2015-01-21
    • 1970-01-01
    • 1970-01-01
    • 2013-10-01
    • 2021-06-19
    相关资源
    最近更新 更多