4

我需要通过 ajax 调用局部视图。我已经尝试了以下,但我不知道如何完成它。

$("#UserName").change(function () {
        var userid = $("#UserName").val();
        var ProvincialStateID = $("#State").val();
        var Hobbyid = $("#Hobby").val();
        var Districtid = $("#DistrictNames").val();
        var Homeid = $("#Hobbyhome_EstablishmentId").val();
        var urlperson = '@Url.Action("FetchPersonByUserName")';
        $.ajax({
            type: "POST",
            url: urlperson,
            data: { userid: userid, stateid: ProvincialStateID, hobbyid: Hobbyid, districtid: Districtid, homeid: Homeid },
            success: function (data) { 
           //Dont know what to write here
        });
    });

这是我在控制器中编写的函数:

 [HttpPost]
    public ActionResult FetchPersonByUserName(int userid,int stateid,int districtid,int homeid,int Hobbyid)
    {
      //Code to fetch the data in the partial using all parameters
      return PartialView("_LearnerAssociationGridPartial", list);
    }

当我单击下拉菜单时,将调用 ajax,我希望通过 ajax 调用的函数将其重定向到局部视图。请帮助我,因为目前我无法显示我的部分视图

4

2 回答 2

4

你需要的是类似

$.ajax({
   type: "POST",
   url: urlperson,
   data: { userid: userid, 
           stateid: ProvincialStateID, 
           hobbyid: Hobbyid, 
           districtid: Districtid, 
           homeid: Homeid },
    success: function (data) { 
          var result = data; 
          $('targetLocation').html(result);
    }
   });

建议不要直接使用变量中的数据,但您可以。现在目标位置是您希望显示结果的位置。

在这里查看更多信息:

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

至于缓慢获取数据,请尝试优化您的查询

更新 对于 nhibernate 运行缓慢,请尝试http://www.hibernatingrhinos.com/products/nhprof这是 nhibernate profiler,付费版本,或尝试 sql profiler 查看正在执行的查询,通常您可以获得更多由于查询的复杂性,会期望和/或真的很慢查询。

于 2012-05-03T12:26:55.573 回答
3

我不明白您所说的重定向到部分视图是什么意思。通常人们使用 ajax 和 Partial 视图来获取页面的一部分而无需刷新页面(你可能已经在这个站点/facebook/twitter 等中看到过这种行为。)所以我猜你可能想要显示你正在获取的数据异步显示在当前页面的一部分中。你可以在你的成功处理程序中做到这一点

$.ajax({
        type: "POST",
        url: urlperson,
        data: { userid: userid, stateid: ProvincialStateID, hobbyid: Hobbyid, districtid: Districtid, homeid: Homeid },
        success: function (data) { 
          $("#divUserInfo".html(data);
        }
 });

divUserInfo假设您在当前页面中有一个带有 id 的 div 。

如果你真的想在 ajax 发布后重定向,你可以这样做。

$.ajax({
        type: "POST",
        url: urlperson,
        data: { userid: userid, stateid: ProvincialStateID, hobbyid: Hobbyid, districtid: Districtid, homeid: Homeid },
        success: function (data) { 
          window.location.href="Why-I-need-Ajax-Then.php";
        }
 });

就个人而言,我不使用HttpPost(在客户端和服务器中)如果它是GET某些数据的方法。我简单地使用 jquery 获取或加载。

$.get("yourUrl", { userid: userid, stateid: ProvincialStateID } ,function(data){
  $("#divUserInfo".html(data);
});
于 2012-05-03T12:22:26.573 回答