1

这是 JS 文件中用于传输数据的代码。

          var requestData = {
                lati: latitude,
                longi: longitude
            };

            $.ajax({
                url: '/User/populate_place',
                type: 'POST',
                data: requestData,
                dataType: 'json'
            });

这是我在控制器中的功能。

    [HttpPost]
    public ActionResult populate_place(string lati, string longi)
    {
        list_placesModels list_place = new list_placesModels();
        list_place.Latitude = lati;
        list_place.Longitude = longi;

        return RedirectToAction("About", "Home");
    }

调试程序功能被调用但视图没有改变。它仍然显示旧视图。

4

2 回答 2

3

一种简单的方法是,您可以通过以下操作方法将 URL 移交给客户端以自行处理:

[HttpPost]
        public ActionResult MyRedirectAction()
        {
            ViewBag.Message = "Your contact page.";
            return Json(Url.Action("About", "Home")); //You can find how i am returing the url 
                                                      // for 'About' action of 'HomeController' so that 
                                                      // it will return the corresponding view.
        }
public ActionResult About()
        {
            ViewBag.Message = "Your app description page.";

            return View();
        }

现在在您的视图脚本(可能是 Jquery)中,您可以重定向如下所示:

<input type="button" id="btnRedirectToAbout" value="Redirect To About" />

<script src="../../Scripts/jquery-1.7.1-vsdoc.js" type="text/javascript"></script>
<script src="../../Scripts/jquery-1.7.1.js" type="text/javascript"></script>
<script type="text/javascript">
    $("#btnRedirectToAbout").click(function () {
        $.post('@Url.Action("MyRedirectAction","Home")', function (data) {
            document.location = data;
        });
    });
</script>

我希望这可以帮助您解决问题。

于 2013-03-07T15:02:02.963 回答
1

当您通过 ajax 访问控制器时,响应不会影响用户看到的页面,响应没有被处理,您需要在 ajax 代码中添加一个成功:处理程序。但是,如果这个调用总是会导致用户被转发到另一个页面,你不需要做 ajax,你可以像下面一样使用普通的 mvc ActionLink。

@Html.ActionLink("Link text", "populate_place", "user", new {lati = latiValue, longi = longiValue}, null)

更新

我认为你必须做类似下面的事情,我不确定为什么成功没有受到打击,但如果你使用完整的,它会起作用,这需要调查。mvc 控制器必须返回 url,而 ajax 响应处理程序需要重定向到该 url。

根据Siva Gopal 的回答更正

控制器

[HttpPost]
    public string populate_place(string lati, string longi)
    {
        return Url.Action("About", "Home").ToString();
    }

Javascript

    $.ajax({
        url: '/Home/populate_place',
        type: 'POST',
        data: requestData,
        dataType: 'json',
        complete: function (data) {
            document.location = data.responseText;
        }
    });
于 2013-03-07T13:30:19.033 回答