你将如何使用jQuery来post到另一个使用Razor语法的控制器?下面是我尝试使用的代码。除了包含@Url.Action的警报之外,每个警报都会弹出我期望的确切信息。这给了我一个只包含控制器和方法的网址(即/Agent/Details)。sNumber完全丢失。
奇怪的是,使用正确的sNumber参数,这段代码仍然可以正确地发送到控制器。但是,一旦控制器经历了从数据库中获取代理并尝试呈现视图的过程,就不会发生任何事情。用户停留在相同的页面上。
这是jQuery
alert("input: " + item + ", map: " + map[item].sNumber);
var sNumber = map[item].sNumber;
alert("variable: " + sNumber);
alert('@Url.Action("Details","Agent")', { id: sNumber });
$.post('@Url.Action("Details","Agent")', { id: sNumber });控制器中有一大堆代码,所以我不会让你发布它。但是,这是最后一行
return View(bigAgent);控制器使用sNumber输入参数从我们的数据库中获取记录,并将该代理的信息传递给Details视图。我已经使用jQuery搜索和我们的常规搜索(正确地重定向)检查了bigAgent对象的内容,它们是相同的。无论出于什么原因,在使用jQuery搜索时,您都不会被定向到Details页面。
发布于 2013-05-07 00:28:30
这并不奇怪,它是正确发布的。毕竟您使用的是POST请求,所以sNumber参数不像GET请求(例如/Agent/Details/3)那样属于URL。
您不会被重定向,因为当您使用jQuery AJAX方法时,它们是异步发生的。您需要在$.post()函数的成功回调中自己处理重定向。
$.post('url', { data }, function(data) {
// callback
});看起来你根本不应该使用AJAX,而应该执行常规的表单提交,这样你就可以在你的控制器中处理重定向。
https://stackoverflow.com/questions/16402947
复制相似问题