Estoy tratando de comenzar con las llamadas ASP.NET MVC Ajax.
Controlador:
public class AjaxTestController : Controller
{
//
// GET: /AjaxTest/
public ActionResult Index()
{
return View();
}
public ActionResult FirstAjax()
{
return Json("chamara", JsonRequestBehavior.AllowGet);
}
}
Ver:
<head runat="server">
<title>FirstAjax</title>
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function () {
var serviceURL = '/AjaxTest/FirstAjax';
$.ajax({
type: "POST",
url: serviceURL,
data: param = "",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: successFunc,
error: errorFunc
});
function successFunc(data, status) {
alert(data);
}
function errorFunc() {
alert('error');
}
});
</script>
</head>
Solo necesito imprimir una alerta con el método del controlador que devuelve datos. Sobre el código, simplemente imprima "chamara" en mi vista. Una alerta no se dispara.
ACTUALIZAR
Modifiqué mi controlador como se muestra a continuación y comenzó a funcionar. No tengo una idea clara de por qué está funcionando ahora. Alguien por favor explique. El parámetro "a" no está relacionado, lo agregué porque no puedo agregar dos métodos con el mismo nombre de método y parámetros. Creo que esta podría no ser la solución, pero está funcionando.
public class AjaxTestController : Controller
{
//
// GET: /AjaxTest/
[HttpGet]
public ActionResult FirstAjax()
{
return View();
}
[HttpPost]
public ActionResult FirstAjax(string a)
{
return Json("chamara", JsonRequestBehavior.AllowGet);
}
}
c#
jquery
asp.net
asp.net-mvc
asp.net-mvc-2
chamara
fuente
fuente
{"name":"chamara"}
. luego intente leer comodata['name']
Respuestas:
Después de la actualización que haya realizado,
Anteriormente, solo devolvía JSON al navegador sin renderizar ningún HTML. Ahora tiene una vista HTML renderizada donde puede obtener sus datos JSON.
No puede representar directamente JSON sus datos sin formato, no HTML.
fuente
Elimina el atributo de datos ya que no lo estás
POSTING
nada para el servidor (su controlador no espera ningún parámetro).Y en su método AJAX puede usar
Razor
y usar en@Url.Action
lugar de una cadena estática:De su actualización:
fuente
Use una navaja para cambiar dinámicamente su URL llamando a su acción de esta manera:
fuente
En primer lugar, no es necesario tener dos versiones diferentes de las bibliotecas jquery en una página, ya sea "1.9.1" o "2.0.0" es suficiente para que las llamadas ajax funcionen.
Aquí está el código de su controlador:
Así es como debería verse su vista:
fuente
Si solo necesita presionar el Método C # en su llamada Ajax, solo necesita pasar dos tipos de materia y una URL si su solicitud es obtenida, entonces solo necesita especificar la URL solamente. siga el código a continuación, está funcionando bien.
Código C #:
Código de secuencia de comandos de Java si se obtiene una solicitud
Código de secuencia de comandos de Java si se envía una solicitud y también [HttpGet] a [HttpPost]
Nota: Si usa FirstAjax en el mismo controlador en el que está su View Controller, entonces no es necesario el nombre del controlador en la url. me gusta
url: 'FirstAjax',
fuente
Es para su pregunta ACTUALIZAR.
Dado que no puede tener dos métodos con el mismo nombre y firma, debe usar el atributo ActionName:
ACTUALIZAR:
Y consulte este enlace para obtener más referencias sobre cómo un método se convierte en una acción. Aunque muy buena referencia.
fuente
Ver;
Método de controlador;
fuente
en lugar de
url: serviceURL,
usary estás pasando 2 parámetros a successFunc?
fuente
Agregue "JsonValueProviderFactory" en global.asax:
fuente