首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ajax与请求openWeatherMap

ajax与请求openWeatherMap
EN

Stack Overflow用户
提问于 2016-07-19 14:05:18
回答 1查看 81关注 0票数 0

所以我需要在地图上画一个图标,当状态正常的时候。但是当我将请求改为ajax时,我得到了

位置0处JSON中的意外令牌u

当我回去要求的时候一切正常..。但是我需要异常处理,所以这就是Ajax的原因。

JS

代码语言:javascript
复制
    function displayXML()
{
    if (this.readyState == 4)
    { 
        proccessResults();

        if (this.status == 200)
        {
            console.log(this.responseXML);

        } else {
            console.log(this.status);
            alert('Something went wrong')
        }
    }
}
var getWeather = function(northLat, eastLng, southLat, westLng) {
    gettingData = true;
    var requestString = "http://api.openweathermap.org/data/2.5/box/city?bbox="
        + westLng + "," + northLat + ","
        + eastLng + "," + southLat + ","
        + map.getZoom()
        + "&cluster=yes&format=json"
        + "&APPID=" + openWeatherMapKey;
    var ajax = new XMLHttpRequest();
    ajax.open('GET', requestString, true);
    ajax.onreadystatechange = displayXML;
    ajax.send();
    // request = new XMLHttpRequest();
    // request.onload = proccessResults;
    // request.open("get", requestString, true);
    // request.send();
};

var proccessResults = function() {

    var results = JSON.parse(this.responseText);
    if (results.list.length > 0) {
        resetData();
        for (var i = 0; i < results.list.length; i++) {
            geoJSON.features.push(jsonToGeoJson(results.list[i]));
        }
        drawIcons(geoJSON);
    }
};

答复:

代码语言:javascript
复制
{"cod":"200","calctime":0.0007,"cnt":2,"list":[{"id":3082473,"name":"Wejherowo","coord":{"lon":18.23559,"lat":54.605679},"main":{"temp":15.33,"pressure":1012,"humidity":93,"temp_min":15,"temp_max":15.56},"dt":1468456804,"wind":{"speed":0.5,"deg":0},"clouds":{"all":20},"weather":[{"id":801,"main":"Clouds","description":"few clouds","icon":"02n"}]},{"id":3099424,"name":"Gdynia","coord":{"lon":18.531879,"lat":54.51889},"main":{"temp":15.3,"pressure":1012,"humidity":93,"temp_min":15,"temp_max":15.56},"dt":1468456816,"wind":{"speed":0.5,"deg":0},"clouds":{"all":20},"weather":[{"id":801,"main":"Clouds","description":"few clouds","icon":"02n"}]}]}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-19 14:40:12

不使用任何参数调用proccessResults函数。它不知道this (或this.responseText)是什么。您正在尝试将字符串"undefined“解析为JSON。这就是你的“意外标记u”错误的来源。

尝试将processResults函数更改为接受一个参数

代码语言:javascript
复制
var proccessResults = function(jsonString) {    
    var results = JSON.parse(jsonString);
    if (results.list.length > 0) {
        resetData();
        for (var i = 0; i < results.list.length; i++) {
            geoJSON.features.push(jsonToGeoJson(results.list[i]));
        }
        drawIcons(geoJSON);
    }
}

然后当你调用它时,把this.responseText传递给它

代码语言:javascript
复制
function displayXML(){
    if (this.readyState == 4){ 
        proccessResults(this.responseText);

        if (this.status == 200){
            console.log(this.responseXML);

        }
        else {
            console.log(this.status);
            alert('Something went wrong')
        }
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38460847

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档