【问题标题】:calling controller action method from the view using $.getJSON(url)使用 $.getJSON(url) 从视图调用控制器操作方法
【发布时间】:2014-03-21 07:11:10
【问题描述】:

我有一个控制器,它接受来自视图的一个参数,它应该将 json 数据返回到同一个视图。

关于我的控制器操作

public ActionResult GetDataById(int id)
{
    var data = ...give me data...
    return Json(data, JsonRequestBehavior.AllowGet);
}

我的观点

<ul id="#myList">
</ul>

(function () {
   var updateList = function (competitions) {
       $("#myList").html($("listTemplate").render(competitions))
                             .listview();
   };
   $(document).one("pageinit", function () {
        var url = "/Home/GetDataById/1";
        $.getJSON(url)
         .then(updateList);
    });    
} ());

<script id="listTemplate" type="text/x-jsrender">
   <li>
       <a href="{{:Name}}">{{:Id}}
           <span class="ui-li-count">{{:CountedData}}</span>
   </li>    
</script>

在调试 GetDataById 时根本没有命中。当我在调用 $.getJSON 之前放置 alert(url) 时,我得到了正确的 url。我在这里做错了什么?

更新: 路线配置是

routes.MapRoute(
       name: "Default",
       url: "{controller}/{action}/{id}",
       namespaces: new[] { "MyWebApp.Controllers" },
       defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);

【问题讨论】:

  • 您能告诉我们您的路线配置吗?
  • 控制器是否在你指定的命名空间内?
  • 我把url放在浏览器地址栏,你得到响应了吗?只需要排除服务端就知道专注于客户端

标签: c# .net asp.net-mvc


【解决方案1】:

如果您将 Id 指定为参数会发生什么

var url = "/Home/GetDataById";

$.getJSON(url, { id: 1 })

【讨论】:

    【解决方案2】:

    只是一个疯狂的猜测,但您是在本地运行该站点吗?如果是这样,它是否在虚拟目录中(即你是去http://localhost/home/index 还是http://localhost/mysite/home/index)

    你可以试试这个:

    var url = @Url.Content( "~/Home/GetDataById/1" );
    

    【讨论】:

    • 不,也尝试使用@Url.Action(...)。结果相同。
    • 您是否使用 Fiddler 仔细检查了请求发送到的地址并检查了返回的 HTTP 结果?
    【解决方案3】:

    我正在使用 Quite M. Porta's 描述的 $.getJSON,但略有不同。我在 URL 的末尾添加了一个“/”

    $.getJSON("/Home/GetDataById/", { id: 1 }).then(updateList);
    

    如果一切都失败了,你可以试试。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-27
      • 1970-01-01
      • 2019-08-07
      • 1970-01-01
      • 2011-10-25
      • 1970-01-01
      相关资源
      最近更新 更多