Javascript:当我想获得响应时未定义

Posted

技术标签:

【中文标题】Javascript:当我想获得响应时未定义【英文标题】:Javascript: undefined when I want to get the response 【发布时间】:2018-02-07 03:43:49 【问题描述】:

我想从邮政编码中获取城市名称。 我开始使用GeoNames example 来实现它,但是我遇到了一些错误。我设法“工作”(它发送请求并在响应选项卡上我看到正确的响应,但我无法访问它。

我的 sn-p 是:

var countrycode = document.getElementById("countrySelect").value;
var postalcode = document.getElementById("postalcodeInput").value;

    request = 'http://api.geonames.org/postalCodeLookupJSON?postalcode=' + postalcode + '&country=' + countrycode + '&callback=getLocation&username=myUname';

    // Create a new script object
    aObj = jQuery.getJSON(request)
    console.log(aObj);
    response = aObj.responseText;
    console.log(response);

console.log(aObj)我得到:

Object readyState: 1, getResponseHeader: getResponseHeader(), getAllResponseHeaders: getAllResponseHeaders(), setRequestHeader: setRequestHeader(), overrideMimeType: overrideMimeType(), statusCode: statusCode(), abort: abort(), state: state() , 总是: always(), catch: catch(),...

如果我点击更多,我会看到响应在 responseText 中。

console.log(response) 的输出是 'undefined'

如何获得响应?我错过了什么?

【问题讨论】:

$.getJSON() 是一个异步 API。 您能多谈谈异步 API 以及改用什么吗? @Feralheart developers.google.com/web/fundamentals/getting-started/primers/… How do I return the response from an asynchronous call?的可能重复 【参考方案1】:

请查找示例。 getJson 是异步调用,请在成功回调中写下你的逻辑,如下所示。

$.getJSON(request, function(result)
           //success logic
           console.log(result);
           //response = aObj.responseText;
            //console.log(response);
        );

请参考http://api.jquery.com/jquery.getjson/ 了解更多 理解。

【讨论】:

以上是关于Javascript:当我想获得响应时未定义的主要内容,如果未能解决你的问题,请参考以下文章

React - 使用外部 URL 时未定义地图功能

使用React Native Fetch中的对象响应时未处理的Promise Rejection

在字符串列上使用 GROUP BY 时未获得分组结果

运行 Jest 测试时未定义`regeneratorRuntime`

JavaScript:在AWS Lambda Node应用程序中将RSS转换为JSON

尝试从 API 检索数据时未定义经度