如何调用嵌套的ajax调用并将对象数据发送到ASP.Net MVC 5中的控制器

时间:2017-01-17 20:53:47

标签: jquery ajax asp.net-mvc asp.net-mvc-5

我有两个控制器

  1. 设置控制器

    行动 - GetAvailableLocationsFor

  2. 的HomeController

    行动 - 指数

  3. 我想要实现的步骤

    1. GetAvailableLocationsFor进行ajax调用,然后从成功回调中获取对象数据。此操作无需查看。
    2. 现在收到对象数据,再对HOMECONTROLLER中的Index Action进行另一个ajax调用,并将对象传递给那里。
    3. 以下是我可以实现的目标。

      HomeController - GetAvailableLocationsFor

      public ActionResult GetAvailableLocationsFor(int accountId, int groupId)
              {
                  FullConfigMV configData = SetLoader.GetSettings(accountId, groupId);
                 return // HOW TO RETURN configData from Here to first ajax call
      }
      

      HomeController - 索引操作

      [HttpPost]
      public ActionResult Index(FullConfigMV data)
      {
        //SECOND AJAX CALL SHOULD COME HERE
      }
      

      嵌套Ajax调用

      <script>
          $(document).ready(function()
          {
              $("#tan").change(function()
              {
                  alert(this.value);
                  $.ajax({
                      type: 'POST',
                      url: '/Settings/GetAvailableLocationsFor',
                      data: { accountId: 28462, groupId: 35},
                      success: function (data) { // data should represent configObj
      
                          $.ajax({
                              type: 'POST',
                              url: '/Home/Index',
                              data: // WHAT TO WRITE HERE,
                              success: function (data) {
                                  //WHATEVER
                              },
                              error: function () {
                                  DisplayError('Failed to load the data.');
                              }
                          });
      
                      },
                      error: function () {
                          DisplayError('Failed to load the data.');
                      }
                  });
      
      
              });
          });
      </script>
      

2 个答案:

答案 0 :(得分:0)

更好的方法是在GetAvailableLocationsFor操作

中返回重定向

return RedirectToAction("Index", "Home", configData)

然后在你的ajax成功而不是第二次ajax调用。只需处理Home / Index返回的内容。

答案 1 :(得分:0)

JSON方法返回GetAvailableLocationsFor数据。在第二次ajax调用之后,您可以发送如下数据:

data: JSON.parse(response),

这会在Index方法

中的参数中获取数据