ASP.NET MVC2 JsonResult此请求已被阻止
我知道这个问题很熟悉,但我无法克服 这是我的控制器动作ASP.NET MVC2 JsonResult此请求已被阻止,asp.net,jquery,ajax,asp.net-mvc-2,jsonresult,Asp.net,Jquery,Ajax,Asp.net Mvc 2,Jsonresult,我知道这个问题很熟悉,但我无法克服 这是我的控制器动作 public JsonResult AddToCart(int productId, int quantity = 1, int optionValue = 0) { AjaxActionResponse res = new AjaxActionResponse(); res.Result = ture; ...... return Json(res, JsonRequestBehavior.AllowGet); } 这是
public JsonResult AddToCart(int productId, int quantity = 1, int optionValue = 0)
{
AjaxActionResponse res = new AjaxActionResponse();
res.Result = ture;
......
return Json(res, JsonRequestBehavior.AllowGet);
}
这是我的ajax请求
$.ajax({
type: "GET",
contentType: "application/json; charset=utf-8",
url: "<%= Url.Action("AddToCart", "CartAjax") %>",
data: ({'productId': productId, 'quantity': quantity, 'optionValue': optionValue}),
dataType: "json",
success: function (d) {
if ($.isEmptyObject(d)) {
return;
}
if (!d.Result) {
alert(d.ErrorMessage[0].ErrorMessage);
}
else {
$("#myCartBox").dialog("open");
}
return;
}
});
$.ajax({
键入:“获取”,
contentType:“应用程序/json;字符集=utf-8”,
url:“”,
数据:({'productId':productId,'quantity':quantity,'optionValue':optionValue}),
数据类型:“json”,
成功:功能(d){
如果($.isEmptyObject(d)){
返回;
}
如果(!d.Result){
警报(d.ErrorMessage[0].ErrorMessage);
}
否则{
$(“#myCartBox”)。对话框(“打开”);
}
返回;
}
});
当我运行ajax请求时,会弹出已知错误
此请求已被阻止,因为
敏感信息可能是
向第三方网站披露
在GET请求中使用时。到
允许获取请求,设置
将JsonRequestBehavior添加到AllowGet
我试图使AddToCart操作[HttpPost]可接受,但此时:参数从未到达方法,请求返回缺少参数错误(500 int.serv错误)
我只能使用get方法运行,但此时请求已被阻止:)
我错过什么了吗?或者MVC2 Ajax请求的正确方式是什么。WebForms在从JavaScript调用方法方面非常成功,但我在MVC上做不到
有什么想法吗?我不确定这是否是您的基本问题,但您不应该将内容类型设置为text/html。这不是您要发送的内容,也不是MVC期望的内容。完全忽略该参数,让jQuery将其设置为
application/x-www-form-urlencoded
,这是合适的。您是否尝试过使用此方法签名使用POST
[HttpPost]
public ActionResult AddToCart(FormCollection form)
或使用数据绑定:
public class CartItem {
public int productId {get; set;}
public int quantity {get; set;}
public int optionValue {get; set;}
}
然后:
不幸的是,我没有一个好的答案,但我用这种方式解决了自己的一些问题(而不是找出如何通过路由很好地传递参数)。嗯,是的,你是对的,但它只是在尝试。我的代码的第一个版本有“application/json”内容类型,但没有什么不同。application/json也不正确。该数据参数不会作为JSON发送到服务器。尝试省略内容类型;jQuery会自动为常规urlencoded请求设置正确的路径。实际上,您可以完全忽略
contentType
,让jQuery设置它。我这样做了,但没有做任何更改:(您确定请求被路由到您认为是的控制器操作吗?这在过去一直困扰着我。因为路由是“贪婪”,很容易遇到这种情况。如果您的请求被路由到错误的操作,那么将AllowGet添加到此操作将导致相同的错误是有道理的。哦,天哪,它起作用了:)我认为,模型绑定是此类请求的正确方式。非常感谢@mootinator和其他参与者:)
public ActionResult AddToCart(CartItem c)