Javascript jQuery未定义的ajax函数

Javascript jQuery未定义的ajax函数,javascript,jquery,Javascript,Jquery,从jQuery开始,我想检索并显示返回数组的自定义ajax函数的结果。但我的控制台将我送回未定义: 未定义 jQuery库CDN在部分中被正确引用。我读了很多关于这个网站的讨论,但是我不能解决这个问题。但是,我觉得我的代码是正确的 function query_suggest(query, lang){ var result; $.ajax({ url: 'http://suggestqueries.google.com/complete/search',

从jQuery开始,我想检索并显示返回数组的自定义ajax函数的结果。但我的控制台将我送回未定义:

未定义

jQuery库CDN在部分中被正确引用。我读了很多关于这个网站的讨论,但是我不能解决这个问题。但是,我觉得我的代码是正确的

function query_suggest(query, lang){
    var result;

    $.ajax({
        url: 'http://suggestqueries.google.com/complete/search',
        data: {
            "hl": lang,
            "ds": "",
            "q": query,
            "client": "firefox"
        },
        jsonpCallback: 'msgsJsonCallback', 
        type: 'GET',
        headers: {
            "Accept-Language": lang,
            "Accept": "application/json",
            "User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0"
        },
        dataType: 'jsonp',
        success: function(data) {       
            result = data;
            return result;

        },
        error: function(jqXHR, textStatus, errorThrown) {
            console.log(jqXHR);
            console.log(textStatus);
            console.log(errorThrown);
        },
        cache: true
    }); 
}

var suggest = query_suggest("chuck norris", "en");

console.log(suggest);

如果您希望围绕ajax调用创建函数包装器,则可以返回一个承诺,并在承诺解析时对响应执行任何操作:

函数查询\u建议(查询,语言){
回报新的承诺(
功能(解析、拒绝){
$.ajax({
网址:'http://suggestqueries.google.com/complete/search',
数据:{
“hl”:朗,
“ds”:“,
问:质疑,,
“客户端”:“firefox”
},
jsonpCallback:'msgsJsonCallback',
键入:“GET”,
标题:{
“接受语言”:朗,
“接受”:“应用程序/json”,
“用户代理”:“Mozilla/5.0(Windows NT 6.1;Win64;x64;rv:60.0)Gecko/20100101 Firefox/60.0”
},
数据类型:“jsonp”,
成功:决心,
错误:拒绝,
缓存:真
});
})
}
var suggest=查询建议(“chuck norris”,“en”);
建议。然后(结果=>{
console.log(result)//成功时
}).catch(函数(){
console.log(this,arguments)//发生错误
})

如果您希望
query\u suggest
返回响应,它不会。因为http请求是异步进程,但函数立即返回。您只能在
success
中访问响应。我理解您的解释,谢谢您的帮助。