在asp.net mvc中使用ajax post将数据从JS传输到控制器中的函数.但观点并没有改变
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代码中添加一个success:处理程序。但是,如果这个调用总是导致用户被转发到另一个页面,你不需要做ajax,你可以使用普通的mvc ActionLink,如下所示。
@Html.ActionLink("Link text", "populate_place", "user", new {lati = latiValue, longi = longiValue}, null)
更新
我认为你必须像下面这样做,我不确定为什么成功没有被击中,但如果你使用complete,它是有效的,这需要研究。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;
}
});
相关文章:
- 在指令控制器中使用$attrs时出现问题
- 有没有任何方法可以将控制器从文件加载到ui路由器$stateProvider中
- 从控制器返回后Ajax启动事件激发
- 获取@ResponseBody的一部分作为主干和Spring MVC控制器之间的参数
- 如何在单击复选框后调用控制器方法
- 在控制器和数据对象之间同步数据
- angularjs模态将数据传输到外部控制器的正确方法
- 将资源文件数据从控制器传输到js文件
- 将一些数据从一个控制器传输到另一个控制器,或者如何将控制器更改为服务
- 使用AngularJS服务将数据从一个html传输到另一个html(控制器之间的数据共享)
- 使用服务在 Angular 中不同应用程序的控制器之间传输数据
- 将逻辑传输到控制器
- Razor:将输入文本+模型传输到控制器
- 跨视图控制器传输值不工作
- 将数据从工厂传输到控制器
- 如何从控制器中多次调用方法?异步传输
- 如何在Web2py中使用jquery将数据从视图传输到控制器动作函数
- 在asp.net mvc中使用ajax post将数据从JS传输到控制器中的函数.但观点并没有改变
- CodeIgniter -在控制器和视图之间传输JSON
- 角度 - 将ng-init从视图传输到控制器