ASP.NET MVC2 JsonResult Этот запрос был заблокирован - PullRequest
2 голосов
/ 17 декабря 2010

Я знаю, что вопрос очень знаком, но я не могу над ним ответить.

Это мое действие контроллера

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-запрос, появляется известная ошибка

Этот запрос был заблокирован, поскольку конфиденциальная информация может быть раскрыта сторонним веб-сайтам, когда она используется в запросе GET.Чтобы разрешить GET-запросы, установите для JsonRequestBehavior значение AllowGet.

Я пытался сделать действие AddToCart [HttpPost] приемлемым, но в это время: параметры никогда не поступали, метод и ошибка отсутствующего аргумента возвращались из запроса (500 intОшибка сервера)

Я могу работать только с методом get, но в данный момент запрос заблокирован:)

Я что-то упустил?Или каков правильный путь для запроса MVC2 Ajax.WebForms были очень успешны в вызове методов из JavaScript, но я не смог сделать это в MVC.

Есть идеи?

Ответы [ 2 ]

1 голос
/ 17 декабря 2010

Вы пытались использовать 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;}
}

Тогда:

 public ActionResult AddToCart(CartItem c)

К сожалению, я неУ меня нет хорошего ответа, но я решил некоторые из моих собственных проблем таким образом (вместо того, чтобы выяснить, как правильно передать параметры, используя маршруты).

1 голос
/ 17 декабря 2010

Я не знаю наверняка, что это ваша основная проблема, но вы не должны устанавливать тип содержимого на text / html. Это не то, что вы отправляете или чего ожидает MVC. Опустите этот параметр в целом, и позвольте jQuery установить его на application/x-www-form-urlencoded, что подходит.

...