Estoy tratando de usar ajax para llamar a un método de controlador y estoy recibiendo un error interno del servidor.

El jquery se parece a esto:

function user(id) {
    alert(id+" "+$("#comment").val());
    var param = {
        userId : id,
        comments : $("#comment").val()
    };

    $.ajax({
        url: "/Admin/User",
        contentType: "application/x-www-form-urlencoded",
        type: "POST",
        datatype: "json",
        data: param,
        error: function (xmlHttpRequest, errorText, thrownError) {
            alert(xmlHttpRequest+"|"+errorText+"|"+thrownError);
        },
        success: function (data) {
            if (data != null) {
                alert("success");
            }
        }
    }); 
}

el controlador se parece a esto:

[HttpPost]
    public ActionResult User(int id, string comment)
    {

        var user = UserModel.GetPerson(id);

        user.IsDeleted = true;

        UserModel.UpdatePerson(user);

        return RedirectToAction("ManageUsers");
    }

Parece que el código no es incluso llegar a la controladora. el 1 de alerta en user(id) está activada. ¿Alguien vea lo que pasa aquí?

InformationsquelleAutor Mike | 2013-05-22

3 Comentarios

  1. 3

    Las propiedades del objeto de conflicto con los argumentos de la acción

    Propiedades Del Objeto

    {
       userId : id,
       comments : $("#comment").val()
    }

    vs Argumentos de Acción

     int id, string comment

    Intente cambiar para que coincidan, por ejemplo:

    public ActionResult User(int userId, string comments) { ... }

    Tenga en cuenta que no vas a ser capaz de redirigir a la acción de una solicitud asincrónica. Que tipo de derrotas el propósito. Usted tendría que redirigir en una devolución de llamada.

    • buena captura! gracias!
    • O si crea una clase de C# como el parámetro que tiene el id de usuario y comentarios de los accesorios, puede pasar este objeto controlador.
  2. 1

    Después de que Gabe la respuesta, creo que usted encontrará que usted no puede redirigir a la acción de una petición ajax. En su éxito de devolución de llamada que usted necesita para configurar el documento.ubicación de la url de la acción que desea redirigir demasiado. Actualmente la redirección a la acción, es llegar devuelto por la mvc, pero no a su navegador.

    De devolución de llamada

    success: function (data) {
        document.location = data.responseText;
    }

    Controlador de retorno

    return Url.Action("ManageUsers", "Users").ToString();
    • me hicieron saber que esto es cierto. he hecho los cambios anteriores, estoy recibiendo un error no autorizado, sin embargo, y sus actualizar la página actual
    • documento.ubicación = los datos se hizo el truco
  3. 0

    Esto no es una respuesta exacta para esta pregunta, y estoy consciente de eso, pero hubo un caso que me ocurrió mientras yo estaba tratando de llamar a método de controlador a través de la llamada AJAX. He comprobado el método de controlador y me di cuenta de que yo no he puesto [AllowAnonymous] después de [HttpPost]. Obviamente es necesario en mi aplicación, ya que hay diferentes casos para los usuarios registrados y usuarios anónimos. La falta de esta palabra clave causado AJAX de no golpear método de controlador, tal vez hay alguien que está tratando de hacer la misma cosa y ver esta respuesta.

Dejar respuesta

Please enter your comment!
Please enter your name here