2016-05-10 4 views
1

Ich brauche etwas Hilfe. Ich möchte den Google Maps-Marker alle 5 Sekunden mit Daten von db (mssql) aktualisieren.Holen Sie sich Daten von der DB alle 5 Sekunden und senden Sie es durch AJAX zu Ansichten

I JsonResult Hexe Rückkehr tabel Liste haben:

[System.Web.Mvc.HttpGet] 
    JsonResult LoadDB() 
    { 
     EagleDBEntities db = new EagleDBEntities(); 

     return Json(db.Coordinates.ToList(), JsonRequestBehavior.AllowGet); 
    } 

Und mein Ajax-Code in Ansichten

 function getData() { 

      $.ajax({ 
       type: "GET", 
       url: "Home/LoadDB", 
       contentType: "application/json;charset=utf-8", 
       dataType: "json", 
       success: function (result) { 

        $.each(data.items, function(item) { 
         alert('long:'+item.longitude +' lat:'+item.latitude); 
        }); 
       }, 
       error: function (response) { 

        alert('error'); 
       } 
      }); 

Im und ich bekomme Fehleralarm, ich bin nicht aus der Datenbank Empfangen von Daten :(

Failed to load resource: the server responded with a status of 404 (Not Found) http://localhost:7279/Home/LoadDB 
+0

Ihr unmittelbares Problem ist die Route übereinstimmt, wird nicht. Wir müssen Ihre Routenkonfiguration sehen, um zu diagnostizieren, warum. FWIW sollten Sie jedoch die URL in '/ Home/LoadDB' ändern (Hinweis: vorangestellter Schrägstrich), da dieser Code momentan nur im Domain-Root funktioniert. Das heißt, Sie haben auch JavaScript-Fehler. In Ihrer Erfolgsmethode referenzieren Sie "Daten", die nicht definiert sind (vielleicht haben Sie "Ergebnis" gemeint?) Und selbst dann wird die Antwort hier kein "Element" -Mitglied haben, also wird das auch fehlschlagen. –

Antwort

1

Ich reparierte es.

HomeController.cs:

[HttpGet] 
    public JsonResult LoadDB() 
    { 
     EagleDBEntities db = new EagleDBEntities(); 
     var cor = db.Lokalizacja   
      .Select(a => new 
      { 
       szerokosc = a.szerokosc, 
       dlugosc = a.dlugosc 
      }); 

     return Json(cor, JsonRequestBehavior.AllowGet); 
    } 

Maps.cshtml:

 function getData() { 

     var counter = 0; 
     interval = window.setInterval(function() { 
      counter++; 

      $.ajax({ 
       type: "GET", 
       url: "LoadDB", 
       contentType: "application/json;charset=utf-8", 
       dataType: "json", 
       success: function (data) { 
        $.each(data, function (i, item) { 

         moveMarker(item.szerokosc, item.dlugosc); 

        }); 
       }, 
       error: function (response) { 

        alert('eror'); 
       } 
      }); 



      marker.setPosition(pos); 
      if (counter >= 1000) { 
       window.clearInterval(interval); 
      } 
     }, 10); 




    }; 
+0

Die anonyme anonyme Methode ist möglicherweise nicht erforderlich. Ich glaube, Sie hätten eine "nicht autorisierte" Ausnahme erhalten, wenn dies der Fall wäre. – Lopsided

1

Sie haben nur einen JavaScript-Timer-Setup wie dieses:

setInterval(function(){ getData(); }, 3000);

+0

ok, thx, aber ich habe einen Fehler in der Ajax-Code, Ich erhalte keine Daten aus der Datenbank – Bart

+0

Können Sie weitere Details zur Verfügung stellen? Es ist ein C# -Webservice? Kannst du den Ajax-Fehler einfügen? oder ist nur eine Null-Ergebnis-Antwort? –

+0

Sein ASP.NET MVC4, ich aktualisierte Frage – Bart