Javascript Json不使用angular.js

Javascript Json不使用angular.js,javascript,jquery,ajax,json,angularjs,Javascript,Jquery,Ajax,Json,Angularjs,我正在尝试从外部域获取预测信息,这似乎还不起作用。Angular和jQuery都已加载,但HTML中没有显示任何内容。Chrome也不会报告错误消息 var currentCityread = "Eindhoven"; var api1 = 'http://api.openweathermap.org/data/2.5/forecast/daily?q='+currentCityread+'&cnt=10&mode=json&units=m

我正在尝试从外部域获取预测信息,这似乎还不起作用。Angular和jQuery都已加载,但HTML中没有显示任何内容。Chrome也不会报告错误消息

        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;
            });
        }

我认为同源策略禁止您执行跨域查询。您可以做的是在服务器端执行查询,并将结果返回到浏览器。另一个解决方法是使用jsonp。但由于其不安全的性质,不建议使用它。

由于您在角度执行上下文之外的回调之后更新作用域,因此需要使用
$scope.$apply()


但是正如其他人在他们的评论中提到的那样,
$http
可以使用,而JSONP是跨域的请求。

尝试
$scope.$apply()
在完成方法回调中,在赋值之后,这个代码在哪里?ReadJson是控制器吗?否则我不知道如何在那里注入scope。在任何情况下,为什么不使用
$http
?我认为jqueryajax不能在angular的范围内工作。使用$http代替此代码是一个外部javascript文件。ReadJson确实是一个控制器$http不会这样做,因为这可能是不安全的,跨域:)。这毫无意义。它们几乎处于相同的安全级别。关键是不能像这样使用jQuery访问Angularjs范围。