2013-08-05 185 views
0

我試圖從外部域獲取預測信息,但似乎還沒有工作。 Angular和jQuery都被加載,但是HTML中沒有顯示。 Chrome也不會報告錯誤消息。Json不能與angular.js一起工作

 var currentCityread = "Eindhoven"; 
     var api1 = 'http://api.openweathermap.org/data/2.5/forecast/daily?q='+currentCityread+'&cnt=10&mode=json&units=metric&APPID=000000000000000&callback=?'; 
     var api2 = 'http://api.openweathermap.org/data/2.5/weather?q='+currentCityread+'&mode=json&units=metric&APPID=000000000000000&callback=?' 
     function ReadJson($scope) { 
      $.ajax({ 
       dataType: "json", 
       url: api1, 
       }).done(function (output) { 
       $scope.jsonTotal = output.list[0].temp.day+output.list[1].temp.day+output.list[2].temp.day+output.list[3].temp.day+output.list[4].temp.day+output.list[5].temp.day+output.list[6].temp.day+output.list[7].temp.day+output.list[8].temp.day+output.list[9].temp.day; 
       $scope.jsonCalcu = Math.round($scope.jsonTotal/10); 
       $scope.jsonCurrent = Math.round(output.list[0].temp.day); 
       $scope.jsonCurrent2 = Math.round(output.list[1].temp.day); 
       $scope.jsonCurrenticon2 = output.list[1].weather[0].icon; 
       $scope.jsonCurrent3 = Math.round(output.list[2].temp.day); 
       $scope.jsonCurrenticon3 = output.list[2].weather[0].icon; 
      }); 
      $.ajax({ 
       dataType: "json", 
       url: api2, 
       }).done(function (outputcurrent) { 
       $scope.jsonCurrenticon = outputcurrent.weather[0].icon; 
      }); 
     } 
+1

嘗試'$ scope。$ apply()'裏面的done方法回調,賦值後 – Chandermani

+0

這個代碼在哪裏? ReadJson是一個控制器嗎?否則我不知道如何在那裏注入示波器。無論如何,爲什麼不使用'$ http'? –

+0

我不認爲jquery ajax可以使用角度範圍。使用$ http代替 – zsong

回答

1

由於您在角度執行上下文之外的回調之後更新範圍,因此需要使用$scope.$apply()

但正如其他人在其評論中提到的$http可以使用,用JSONP作爲請求是跨域。

+0

這完全是這樣做的。謝謝!:) –

0

我覺得同源策略禁止你執行跨域查詢。你可以做的是在服務器端執行查詢,並將結果返回給瀏覽器。另一個解決方法是使用jsonp。但由於其不安全性,不推薦使用。