2010-12-17 53 views
1

由於某種原因......也許看着太多不同的例子......這是我沒有得到的那些東西之一。我試圖在MVC應用程序中使用Google Maps API,然後使用JQuery從應用程序獲取數據以構建地圖。問題是我無法真正到達動作結果的斷點(除非我手動輸入網址)...Jquery ajax/getJSON沒有進入控制器的MVC ActionResult

在其最基本的形式中,html包含一個onload事件...

<body onload="initialize()"> 

進而調用我的jQuery函數...

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

我已經嘗試了語法一堆根據事情我已經讀到這樣不同的方式...

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

不管我做了什麼......我從來沒有拿到控制器。任何幫助,將不勝感激,因爲我只是沒有得到它。

而且如果有誰知道jQuery的任何好書會處理這樣的事情,建議,歡迎,因爲我覺得它的時間來讓自己早期的聖誕禮物;)

編輯:我還要補充一點,我試圖改變請求的URL部分,但沒有運氣。在執行該請求的頁面是被設置爲主頁的應用

+1

實際上是否要/應用程序/地圖/打印JSON數據?如果不是的話,問題在於該腳本。這也是getJSON,而不是GetJSON,我想。 – 2010-12-17 05:35:10

+0

您是否使用FireBug檢查了您的網絡流量?你得到了什麼樣的HTTP響應? – 2010-12-17 05:42:52

+0

@tandu - 是的,實際上/ App/Map確實會獲得json數據。我在思考腳本問題,因爲腳本不會在控制器中達到中斷點。 – Tim 2010-12-17 18:49:33

回答

2

你試圖改變jQuery的方法名/應用/索引:

的方法被稱爲

getJSON() 

not GetJSON();

plus does/App/Map返回一個json字符串?

這裏是jQuery的的Docu上的getJSON:

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

也可以嘗試與負載回調做這樣

<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

感謝您的意見。稍後我會試一試,看看我能否做到這一點。 – Tim 2010-12-17 18:52:59

+0

這似乎是可行的。我在控制器中遇到過一次ActionResult,然後停止工作。它更像是VS2010的一些類型的兼容性問題,VS2010是它的默認Web服務器,Firefox和Firebug。 – Tim 2010-12-18 05:06:20

+0

如果它沒有改變任何動作兩次,你可以禁用jQuery中的ajax緩存來強制它執行此操作,或者使用post而不是get。 – 2010-12-18 18:36:26

0

或者,您也可以使用此代碼:

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

另外,在ActionResult(JsonResult)中,返回值e應該如下所示,以便允許使用GET進行調用。

return Json(whatevermodel, JsonRequestBehavior.AllowGet)