2015-11-01 37 views
0

所以我查了一下,發現了一些關於如何使用jquery調用2個json文件的很好的信息。雖然我現在可以調用這兩個文件,但出現以下錯誤:var weather = data.data.weather;調用多個JSON文件的問題

如果我註釋掉一個調用json文件的變量(dataUrl2),那麼它可以正常工作。下面是JS

var zipcode = '27560'; 
    var appid = '96afa96cadeb7165258ae95b77fdc'; 
    var startdate = '2015-10-01'; 
    var enddate = '2015-10-31'; 
    var timeperiod ='24';   

    var dataUrl = '//api.worldweatheronline.com/premium/v1/past-weather.ashx?q='+ zipcode +'&format=json&date='+ startdate +'&enddate='+ enddate +'&tp='+ timeperiod +'&key='+ appid  

    var dataUrl2 = '//westbrookfl.com/wp-content/plugins/CSAnalytics/lib/data/data-ChannelData.php' 

    //Creates Table for Citation Data 
     jQuery.when(
      jQuery.getJSON(dataUrl), 
      jQuery.getJSON(dataUrl2) 
     ).then(function (data, datatwo) { 
      console.log(data, datatwo); 
      var citationHTML = ''; 
      jQuery.each(data, function (i) { 
      var weather = data.data.weather; 
       for (var i = 0; i < weather.length; ++i) { 
        citationHTML += '<li id="day'+[i]+'" class="day"><div class="date">' + weather[i].date + '</div><div class="svg-icon"><img src="' + weather[i].hourly[0].weatherIconUrl[0].value + '" /></div><div class="data-wrap col2"><p class="data hi-temp"><span>' + weather[i].maxtempF + '</span><sup class="deg ng-scope" data-ng-if="hasValue()">°</sup></p><p class="data lo-temp"><span>' + weather[i].mintempF + '</span><sup class="deg ng-scope" data-ng-if="hasValue()">°</sup></p></div><p class="data desc">' + weather[i].hourly[0].weatherDesc[0].value + '</p></li>'; 
       } 
      }); 
      jQuery('#citation_report').append(citationHTML); 
     });  

這裏的樣本小提琴以及:https://jsfiddle.net/joseph_a_garcia/s41kr5hj/1/

任何幫助,將不勝感激。

+0

你從dataUrl2 getJSON中得到了什麼?這是否得到JSON需要任何參數? – deepakb

+0

如果您使用url://westbrookfl.com/wp-content/plugins/CSAnalytics/lib/data/data-ChannelData.php,則可以查看響應。我確實有來自這個URL的數據,但我還沒有得到那麼多。 – Phantom

+0

我無法訪問該URL! – deepakb

回答

1

這是一個工作demo

JS

var zipcode = '27560'; 
     var appid = '96afa96cadeb7165258ae95b77fdc'; 
     var startdate = '2015-10-01'; 
     var enddate = '2015-10-31'; 
     var timeperiod ='24';   

     var dataUrl = '//api.worldweatheronline.com/premium/v1/past-weather.ashx?q='+ zipcode +'&format=json&date='+ startdate +'&enddate='+ enddate +'&tp='+ timeperiod +'&key='+ appid  

     var dataUrl2 = '//westbrookfl.com/wp-content/plugins/CSAnalytics/lib/data/data-ChannelData.php' 

     //Creates Table for Citation Data  
$.when(
    $.getJSON(dataUrl), 
    $.getJSON(dataUrl2) 
).done (function (data, data2) { 
    var data = data[0].data; 
    console.log(data); 
       var citationHTML = ''; 
       jQuery.each(data, function (i) { 
       var weather = data.weather; 
        for (var i = 0; i < weather.length; ++i) { 
         citationHTML += '<li id="day'+[i]+'" class="day"><div class="date">' + weather[i].date + '</div><div class="svg-icon"><img src="' + weather[i].hourly[0].weatherIconUrl[0].value + '" /></div><div class="data-wrap col2"><p class="data hi-temp"><span>' + weather[i].maxtempF + '</span><sup class="deg ng-scope" data-ng-if="hasValue()">°</sup></p><p class="data lo-temp"><span>' + weather[i].mintempF + '</span><sup class="deg ng-scope" data-ng-if="hasValue()">°</sup></p></div><p class="data desc">' + weather[i].hourly[0].weatherDesc[0].value + '</p></li>'; 
        } 
       }); 
       jQuery('#citation_report').append(citationHTML); 
      }); 

注:weather對象引用是不是在你的代碼是正確的。我已經添加了這條線var data = data[0].data;,它工作的很好!如果你想使用它,你可以在data2變量中獲得第二個getJSON數據!

+0

[Here](https://jsfiddle.net/deepakb/s41kr5hj/51/)它使用'data2'對象。 – deepakb

0

它看起來像你需要儘可能多的參數傳遞給你傳遞給.whendone功能,所以done(function(data1, data2) {...

最佳。

+0

謝謝,我試過了,但是錯誤依然存在。試圖繞過這個難題。 – Phantom

+0

我更新了代碼,但它仍然不能正常工作 – Phantom