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

Javascript 索引视图,jquery中的函数以错误的顺序运行,javascript,jquery,asp.net-mvc,Javascript,Jquery,Asp.net Mvc,在我的MVC.NET视图中,我有3个javascript函数,它们以错误的顺序运行,而不是从上到下 我们从我们的桌子上得到城市,然后推到一个阵列。此外,在我们使用URL+cit+key调用open weather map API的下一个函数中,也没有创建URL:s 使用新的URL:s调用open weather map以获取温度数据 打开的天气图中的天气数据应该放在信息窗口和内容中,以便稍后单击标记时打印 第二个函数每次都在第一个函数之前运行,我们尝试了很多不同的方法,但都没有效果。我们能做什么

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

  • 我们从我们的桌子上得到城市,然后推到一个阵列。此外,在我们使用
    URL+cit+key
    调用open weather map API的下一个函数中,也没有创建URL:s

  • 使用新的URL:s调用open weather map以获取温度数据

  • 打开的天气图中的天气数据应该放在信息窗口和内容中,以便稍后单击标记时打印

  • 第二个函数每次都在第一个函数之前运行,我们尝试了很多不同的方法,但都没有效果。我们能做什么

    @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>
    
    @型号列表
    @ViewData[“Listan”]
    @ViewBag.message
    函数myMap(){
    var myCenter=newgoogle.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=[];
    $(文档).ready(函数(){
    var url='/People/myJson';
    var url2=[];
    var-url;
    var数据;
    var字符串=”;
    var-lat=[];
    var-lon=[];
    var namn;
    var i=1;
    var-temp=[];
    var description=[];
    var-wIcon=[];
    $(函数(){
    $.getJSON(url、函数(数据){
    $。每个(数据、函数(){
    //城市[我]=这个[城市];
    城市。推(这个[城市]);
    url2.推送http://api.openweathermap.org/data/2.5/weather?q=“+this['City']+'&APPID=MYKEY”);
    log(“Första loopen:+这个['City']);
    i++;
    });
    console.log(“Hela listan med städer:“+cities+”
    “+“Heeeeej”+url2+”
    ”); }); 警报(“Ska va etta”); getCities(); }); 函数getCities(){ $(函数(){ log(“Url 2 längd:+url2.length”);
    对于(var i=1;i为什么要嵌套2个On Ready函数

    $(document).ready(function () {
    ...
        $(function () {     
    
    这是没有意义的,它不会起作用

    $(document).ready(function(){

    您可以限制此函数的范围

    除此之外,您还定义了整个
    $(document).ready
    在'myMap()'函数中,这意味着您必须首先调用函数myMap来注册其他代码,以便在document ready下运行,这一点非常模糊,您为什么不这样定义呢

    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 = [];
    
    function getCities() {
    
                    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]);
    
                            })
                        });
                    }
    }
    $(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 = [];
    
    
            $.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();
    
    
    
    
    
            var i = 1;
    
    
            $.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));
    
    
                })
            })
    
    });
    
    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=[];
    函数getCities(){
    log(“Url 2 längd:+url2.length”);
    
    对于(var i=1;我可能重复:OMG您有一个
    文档。在
    函数中准备好了
    ,在
    文档中准备好了。在
    函数中准备好了
    ,难怪您的执行完全混乱。创建一个主
    文档。准备好了
    并将所有函数放在其中。文档只准备好一次。BTW
    $(document).ready(
    $(function(){
    (后者是一种速记)是相同的东西这很有趣!现在我们把myMap放在顶部,在文档准备好之后,所有函数都没有jquery$,但是现在它说myMap不是一个函数。可能是关于底部的google maps键。键的末尾包含callback=myMap。