簡體   English   中英

使用ajax post將數據從JS傳輸到asp.net mvc中Controller中的函數。 但觀點沒有改變

[英]Using ajax post to transfer data from JS to a function in Controller in asp.net mvc. But the view is not changed

這是用於傳輸數據的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");
    }

調試程序時調用函數但不更改視圖。 它仍然顯示舊視圖。

其中一個簡單的方法,你可以通過一個動作方法完成切換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>

我希望這可以幫助您解決問題。

當你通過ajax命中控制器時,響應不會影響用戶看到的頁面,響應沒有被處理,你需要為ajax代碼添加一個成功:處理程序。 但是,如果此調用將始終導致用戶轉發到另一個頁面,您不需要執行它ajax,您可以使用正常的mvc ActionLink,如下所示。

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

UPDATE

我認為你將不得不做類似下面的事情,我不確定為什么成功不會受到影響但是如果你使用完整的話它會起作用,這需要深入研究。 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;
        }
    });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM