Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ASP.NET MVC2 JsonResult此请求已被阻止_Asp.net_Jquery_Ajax_Asp.net Mvc 2_Jsonresult - Fatal编程技术网

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)