[HttpPost]
[Route("mapchanged")]
public ActionResult mapchanged(string latitud, string longitud)
{
Session["Latitude"] = latitud;
Session["Longitude"] = longitud;
return RedirectToAction("search?what=&by=bnm");
}
$.ajax({
type: "POST",
async: false,
url: url, // '@Url.Action("mapchanged")',
data: {
latitud: map.getCenter().lat(),
longitud: map.getCenter().lng()
},
dataType: "json",
contentType: 'application/json; charset=utf-8',
cache: false,
success: function(data) {
alert('Success');
},
error: function(err) {
alert('error = ' + err.status);
}
});
上面的代码不起作用-它给出错误404。也尝试了var url = '"Home/mapchanged/"'
,但是它也不起作用。 Ajax代码位于map.js文件中。
答案 0 :(得分:1)
您对此行动有看法吗?加上它是ajax发布,您在执行ajax发布时无法重定向到其他操作。尝试从该操作返回json,看看它是否有效。
return Json(new { true }, JsonRequestBehavior.AllowGet);
答案 1 :(得分:0)
我试图复制源代码。当前代码存在一些问题。
在RouteConfig类中缺少Route属性的配置,没有此配置,[Route]注释/属性不起作用。
routes.MapMvcAttributeRoutes()
在ajax调用中未使用JSON.stringify进行数据
var data = {
latitud: map.getCenter().lat(),
longitud: map.getCenter().lng()
};
$.ajax({
type: "POST",
async: false,
url: '@Url.Action("mapchanged")',
data: JSON.stringify(data),
dataType: "json",
contentType: 'application/json; charset=utf-8',
cache: false,
success: function (data) {
alert('Success');
window.location.href = data.url;
},
error: function (err) {
alert('error = ' + err.status);
}
});
您应该返回具有url属性的Json对象,而不是RedirectToAction
[HttpPost]
[Route("mapchanged")]
public ActionResult mapchanged(LongLat obj)
{
Session["Latitude"] = obj.latitud;
Session["Longitude"] = obj.longitud;
//return RedirectToAction("search?what=&by=bnm");
return Json(new {url = "search?what=&by=bnm"});
}
public class LongLat
{
public double latitud { get; set; }
public double longitud { get; set; }
}