如果 mvc 模型视图控制器有参数,getJSON 不起作用
我在回调方面遇到问题。我什至在 Firebug 中没有收到错误。如果我在 getjson 调用之前和之后发出警报,两个警报都会显示,但 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();
}
有什么想法吗?看来这可能是相关的,如果不抱歉我可以发布一个新线程。
I'm having an issue with a callback. I'm not even getting an error in Firebug. If I alert before and after the getjson call both alerts show but the getjson call doesn't fire.
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]);
});
}
As long as I leave TestPage without a parameter is works. If I add a parameter to TestPage(int id) then the call back to LoadMapLonLats doesn't work. Seems odd. Of course TestPage is the page I'm loading so I need to do some work here before rendering the page. Not sure why adding a parameter to the view would break the callback to another function.
//this breaks he callback to LoadMapLonLats
public ActionResult TestPage(int id)
{
return View();
}
Any ideas? Seems like this may be related, if not sorry I can post a new thread.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
尝试将操作签名中的返回结果设置为
JsonResult
而不是ActionResult
。进一步研究一下,我怀疑这个问题可能与 MVC 2 中对 JSON 结果的
GET
调用的更改有关。http://haacked.com/archive/2009/06/25/json-hijacking.aspx
基本上你需要更改调用
$.post()
并让AcceptVerbs
指定POST
调用。try setting the return result in the action signature as a
JsonResult
instead of anActionResult
.Having a further look at this, I suspect the issue could be related to the changes regarding
GET
calls to a JSON result in MVC 2.http://haacked.com/archive/2009/06/25/json-hijacking.aspx
Basically you need to change the call to
$.post()
and have theAcceptVerbs
specify aPOST
call.