索引视图,jquery中的函数以错误的顺序运行

时间:2017-05-25 08:06:06

标签: javascript jquery asp.net-mvc

我在MVC.NET视图中的javascript中有3个函数,它们以错误的顺序运行,而不是从顶部到底部。

  1. 我们从表中获取城市并推送到数组。此外,我们还没有使用url+cit+key调用开放天气图API的下一个函数创建URL:

  2. 使用新网址调用开放天气图:s以获取温度数据。

  3. 来自开放天气图的天气数据应该放在信息窗口和内容中,以便稍后在点击标记时打印。

  4. 第二个函数每次都在第一个函数之前运行,我们尝试了很多不同的东西,但没有任何工作。我们能做什么?

    @model List<IDAbroad.Models.PeopleModell>
    
    @ViewData["Listan"]
    @ViewBag.message
    
    <script src="~/Scripts/jquery-1.10.2.min.js"></script>
    
    <div id="map" style="width:100%;height:600px"></div>
    
    <script>
    function myMap() {
    
        var myCenter = new google.maps.LatLng(51.508742, -0.120850);
        var mapOptions = { center: myCenter, zoom: 2 };
        var mapCanvas = document.getElementById("map");
        var map = new google.maps.Map(mapCanvas, mapOptions);
        var cities = [];
    
    
        $(document).ready(function () {
    
            var url = '/People/myJson';
            var url2 = [];
            var url;
            var data;
            var string = "";
            var lat = [];
            var lon = [];
            var namn;
            var i = 1;
            var temp = [];
            var description = [];
            var wIcon = [];
    
            $(function () {               
                $.getJSON(url, function (data) {
                    $.each(data, function () {
                        //cities[i] = this['City'];
                        cities.push(this['City']);
                        url2.push('http://api.openweathermap.org/data/2.5/weather?q=' + this['City'] + '&APPID=MYKEY');
    
                        console.log("Första loopen: " + this['City']);
    
                        i++;
                    });
    
                    console.log("Hela listan med städer: " + cities + '<br>' + " HEEEEEEEEJ" + url2 + '<br>');
                });
                alert("Ska va etta");
                getCities();
            });
    
            function getCities() {
                $(function () {
                    console.log("Url 2 längd: " + url2.length);
    
                    for (var i = 1; i <= url2.length; i++) {
                        alert("kom in");
                        var url3 = url2[i]
    
                        $.getJSON(url3, function (data) {
                            $.each(data, function () {
    
                                temp[i] = this['main.temp'];
                                description[i] = this['description'];
                                wIcon[i] = this['icon'];
                                console.log("temperatur: " + temp[i]);
    
                            })
                        });
                    }
                });
    
            };
    
    
    
                var i = 1;
    
            $(function () {
                $.getJSON(url, function (data) {
    
                    $.each(data, function () {
                        namn = this['Firstname'];
    
                        console.log("Position X: " + lat[i]);
                        console.log("Position Y: " + lon[i]);
                        var peoplePosition = new google.maps.LatLng(this['Latitude'], this['Longitude']);
                        var ico = {
                            url: "/profileImg/" + i + ".jpg",
                            scaledSize: new google.maps.Size(35,50)
                        }
                        var marker = new google.maps.Marker({
                            position: peoplePosition,
                            icon: ico
    
                        })
                        i++;
                        marker.setMap(map);
                        var content = this['Firstname'] + '<br>Stad: ' + this['City'] + '<br>Temp: ' + temp[i] + '<br>' + description[i];
                        var infowindow = new google.maps.InfoWindow()
                        google.maps.event.addListener(marker, 'click', (function (marker, content, infowindow) {
    
                            return function () {
                                infowindow.setContent(content);
                                infowindow.open(map, marker);
                            };
                        i++    
                        })(marker,content,infowindow));
    
    
                    })
                })
            });  
        });
    }
    </script>
    <script src="https://maps.googleapis.com/maps/api/js?key=MYSECONDKEY">
    </script>
    

1 个答案:

答案 0 :(得分:0)

为什么你有2个就绪功能嵌套

	

<div class="box"><span class="box_text">0</span></div>

这意味着更少,它不会起作用

当你定义“getCities”时,另一件事就是&#39; $(document).ready(function () { ... $(function () { 内的功能
你限制了这个功能的范围

更重要的是,您已经在{myMap()&#39;中定义了整个$(document).ready(function () {。这意味着你必须首先调用函数myMap来注册你的其他代码才能在Document ready上运行,这真的很模糊,为什么你不能这样定义这样的东西

$(document).ready