我的ajax在.net mvc 4中調用了錯誤的方法,我找不到原因。Ajax調用錯誤的方法
我的ajax:
function addItem(id, ammount) {
$.ajax({
url: "/Shoppingcart/AddItem?id="+id+"&ammount="+ammount,
type: "post",
cache: false,
success: function (result) {
alert("SUCCESS!!!");
},
error: function (textStatus, errorThrown) {
window.console.log(textStatus, errorThrown);
}
});
}
我的MVC控制器:
public class ShoppingcartController : Controller
{
//
// GET: /Shoppingcart/
public ActionResult Index()
{
// Method 1
}
[HttpPost]
public ActionResult AddItem(int id = -1, int ammount = 0)
{
return Redirect("~/Home");
}
}
我的第一個方法是越來越被阿賈克斯,因爲我所說的這是奇怪/購物車/的AddItem 叫這究竟是爲什麼我該怎麼做才能使它工作?
解決方案: 問題不在於方法調用,而是在路由堆棧中。顯然,定義路線的順序會影響它們的重要性。最具體的路線應該始終是要宣佈的第一條路線。
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Index",
url: "{controller}/{id}",
defaults: new { controller = "Home", action = "Index" },
constraints: new { id = @"\d+" }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "ControllerOnly",
url: "{controller}",
defaults: new { controller = "Home", action = "Index", id = 0 }
);
}
你的代碼看起來不錯,你肯定的了'addItem'函數被調用?請檢查fiddler/dev-console/firebug您發送到服務器的哪些請求。 – nemesv
根據提琴手網址http:// localhost:1862/Shoppingcart/AddItem?id = 18&ammount = 1 正在被調用。附加到上述我的成功消息是正確觸發 –
如果是的話,你有任何自定義路由請發佈您的路由配置? – nemesv