2010-12-17 6 views
1

Aus irgendeinem Grund ... vielleicht zu viele verschiedene Beispiele betrachten ... das ist eines der Dinge, die ich gerade nicht bekommen. Ich versuche, das Google Maps API in einer MVC App zu verwenden und dann JQuery zu verwenden, um Daten von der App zu erhalten, um die Karte mit zu erstellen. Das Problem ist, ich kann nicht immer bekommen tatsächlich zu einem Bruchpunkt auf dem Aktionsergebnis (es sei denn, ich in der URL manuell eingeben) ...JQuery Ajax/getJSON nicht immer zu MVC ActionResult in Controller

In seiner einfachsten Form der html ein Onload-Ereignis enthält ...

<body onload="initialize()"> 

die wiederum ruft meine JQuery-Funktion ...

function initialize() { 
    $.GetJSON("/App/Map", MakeMap(mapdata)); 
} 

ich die Syntax habe ich gelesen, eine Reihe von verschiedenen Möglichkeiten, basierend auf Dinge versucht haben, wie ...

function initialize() { 
    $.GetJSON("/App/Map", null, function (mapdata) { MakeMap(mapdata); }); 
} 

Und egal was ich mache ... ich komme nie mit dem Controller dazu. Jede Hilfe mit diesem würde sehr geschätzt, weil ich es gerade nicht verstehe.

Auch wenn jemand eine gute Bücher über JQuery weiß, die mit dieser Art der Sache befassen würde, sind Vorschläge willkommen, weil ich seine Zeit, denke ich ein verfrühtes Weihnachtsgeschenk zu bekommen;)

EDIT: Ich möchte auch hinzufügen, dass Ich habe versucht, den URL-Teil der Anfrage auch ohne Glück zu ändern. Die Seite, die die ersuchende macht, ist die/App/Index mit für die Anwendung auf die Startseite gesetzt

+1

Geht tatsächlich nach/App/Map/print die JSON-Daten? Wenn nicht, ist das Problem mit diesem Skript. Es ist auch getJSON, nicht GetJSON, denke ich. –

+0

Haben Sie Ihren Web-Verkehr mit FireBug überprüft? Welche Art von HTTP-Antwort erhalten Sie? –

+0

@tandu - Ja, tatsächlich geht/App/Map bekommt die JSON-Daten. Ich denke Skript-Problem, weil das Skript nicht jemals den Haltepunkt im Controller treffen wird. – Tim

Antwort

2

haben Sie versucht, die jquery Methodennamen zu ändern:

die Methode aufgerufen wird

getJSON() 

nicht GetJSON();

plus gibt/App/Map eine JSON-Zeichenfolge zurück? Hier

ist die jQuery Docu auf getJSON:

http://api.jquery.com/jQuery.getJSON/

auch versuchen, es so zu tun, mit der Last Rückruf

<html> 
<head> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js" ></script> 
<script> 
$(document).ready(function(){ 
/* your getJSON call underneath this comment */ 
    alert("this should popup when the page loads"); 

    function initialize() { 
     $.getJSON("/App/Map", MakeMap(mapdata)); 
    } 

    initialize(); 
}); 
}); 
</script> 
</head> 
<body> 
<div>hello load page</div> 
</body> 
</html> 
+0

Danke für die Eingabe. Ich werde es ein bisschen später versuchen und sehen, ob ich das funktioniere. – Tim

+0

Es scheint, als würde das funktionieren.Ich bin mit dem ActionResult einmal in den Controller gekommen und dann hat es aufgehört zu arbeiten. Es scheint eher eine Art von Kompatibilitätsproblem mit VS2010, der Standard-Webserver, der mit ihm kommt, Firefox und Firebug. Die App verhält sich einfach nicht zweimal, ohne dass etwas geändert wurde ... – Tim

+0

Wenn es nicht zweimal mit nichts geändert wird, können Sie den Ajax-Cache in jquery deaktivieren, um dies zu erzwingen, oder verwenden Sie post anstelle von get. –

0

Alternativ können Sie diesen Code verwenden:

$.get("/App/Map", null, function(data) { 
        MakeMap(data); 
        }, 'json'); 

Auch in der ActionResult (JsonResult), der Rückgabewert e sollte wie folgt aussehen, um Anrufe mit GET zu ermöglichen.

return Json(whatevermodel, JsonRequestBehavior.AllowGet) 
Verwandte Themen