Sé que la pregunta es muy familiar pero no puedo sobre ella.

Este es mi Controlador de Acción

public JsonResult AddToCart(int productId, int quantity = 1, int optionValue = 0)
{
  AjaxActionResponse res = new AjaxActionResponse();
  res.Result = ture;
  ......
  return Json(res, JsonRequestBehavior.AllowGet);
}

y esta es mi petición 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;
    }
});

cuando ejecuto la petición ajax conocido de error aparece

Esta petición ha sido bloqueado debido a que
la información sensible que podría ser
divulgada a sitios web de terceros
cuando se utiliza en una petición GET. A
permitir peticiones GET, set
JsonRequestBehavior a AllowGet.

Traté de hacer AddToCart acción [HttpPost] aceptable, pero en este momento: parámetros nunca llegaron el método y la falta de argumento de error devueltos a partir de la solicitud (500 int. serv de error)

Yo sólo se pueden ejecutar con el método get, pero la solicitud ha sido bloqueado en este momento 🙂

Que me estoy perdiendo algo? O ¿cuál es la manera correcta de MVC2 petición Ajax. WebForms fue muy correcto acerca de llamar a los métodos de JavaScript, pero yo no podía hacer eso en MVC.

Alguna Idea?

InformationsquelleAutor Orhaan | 2010-12-17

2 Comentarios

  1. 1

    Has intentado usar el correo usando este método de firma?

    [HttpPost]
    public ActionResult AddToCart(FormCollection form)

    O mediante el enlace de datos:

    public class CartItem {
        public int productId {get; set;}
        public int quantity {get; set;}
        public int optionValue {get; set;}
    }

    A continuación:

     public ActionResult AddToCart(CartItem c)

    Por desgracia no tengo un buena respuesta, pero he resuelto algunos de mis propios problemas de esta manera (en lugar de averiguar cómo obtener los parámetros que se pasa muy bien el uso de rutas).

    • Oh mi dios funciona 🙂 creo, Modelo de unión es el camino correcto para este tipo de solicitudes. Muchas gracias @mootinator y otros participantes 🙂
  2. 1

    No sé por cierto que este es su tema fundamental, pero no debe establecer el tipo de contenido de texto/html. Que no es lo que usted está enviando o lo MVC espera. Omitir el parámetro por completo, y dejar de jQuery conjunto a application/x-www-form-urlencoded, lo cual es apropiado.

    • Umm sí, pero sólo estaba tratando. La primera versión de mi código «application/json» tipo de contenido pero nada era diferente.
    • application/json sería incorrecta también. Que parámetro de datos no se envían al servidor como JSON. Trate de omitir el tipo de contenido; jQuery establece el derecho automáticamente para regular urlencoded solicitudes.
    • en realidad se puede omitir el contentType completamente y dejar que el jQuery establezca.
    • Yo lo hice pero no cambió nada 🙁
    • ¿Estás seguro de que la solicitud se envía a la acción del controlador que usted piensa que es? Ese ha sido un problema que ha plagado a mí en el pasado. Dado que las rutas son «codiciosos», es fácil de ejecutar en los que. Si su solicitud fue siendo enviados a la acción equivocada, tendría sentido que la adición de la AllowGet a este resultado sería el mismo error.

Dejar respuesta

Please enter your comment!
Please enter your name here