如果mvc模型视图控制器有一个参数getJSON不起作用

如果mvc模型视图控制器有一个参数getJSON不起作用

问题描述:

我遇到了回调问题。我甚至没有在Firebug中发生错误。如果我在getjson调用之前和之后都发出警报,则两个警报都会显示,但getjson调用不会触发。如果mvc模型视图控制器有一个参数getJSON不起作用

public ActionResult TestPage() 
    { 

     return View(); 
    } 

public ActionResult LoadMapLonLats(int mapId) 
    { 
     //some code 
     return Json(_myMaps); 
    } 


$("#Search").click(function() { 
     $.getJSON("LoadMapLonLats", { mapId: 73 }, loadDbMap); 
    }); 

    function loadDbMap(maps) { 
     alert('m'); 
     $.each(maps, function(i) { 
      alert(maps[i]); 
     }); 
    } 

只要我离开TestPage没有参数是工作。如果我将一个参数添加到TestPage(int id),那么回调到LoadMapLonLats不起作用。似乎很奇怪。当然TestPage是我正在加载的页面,所以我需要在呈现页面之前在这里做一些工作。不确定为什么向视图添加参数会将回调中断到另一个函数。

//this breaks he callback to LoadMapLonLats 

public ActionResult TestPage(int id) 
    { 

     return View(); 
    } 

任何想法?似乎这可能是相关的,如果不是遗憾,我可以发布一个新的线程。

+0

使用萤火虫并检查净选项卡。你可能会在那里发现问题。 – 2010-02-27 13:01:36

尝试将操作签名中的返回结果设置为JsonResult而不是ActionResult

public JsonResult LoadMapLonLats(int mapId) 
    { 
     //some code 
     return Json(_myMaps); 
    } 

乐在其中进一步看,我怀疑问题可能与关于MVC GET调用一个JSON结果2.

http://haacked.com/archive/2009/06/25/json-hijacking.aspx

基本上你需要改变的变化致电$.post(),并让AcceptVerbs指定POST致电。