¿Cómo llamo a un método controlador desde JQuery?

Tengo un código ajax para asp.net (no mvc) para llamar a un método web para obtener datos adicionales del servidor para una solicitud. Pero parece que no puedo averiguar la url para dar mi JQuery en MVC.

 function SubmitAjax(url, message, successFunc, errorFunc) { $.ajax({ type:"POST", url:url, data:message, contentType: "application/json; charset=utf-8", dataType: "json", success:successFunc, error:errorFunc }); }; 

No quiero pasar la lista completa de datos relacionados a una lista de selección a todas las personas que llegan a la página, ya que no todas necesitarán esta funcionalidad. Así que me gustaría llamar a un controlador o método web a través de JQuery, pero parece que no puedo encontrar la forma de abordar la URL en MVC.

Noté esta publicación: la llamada Ajax de JQuery se resuelve en la carpeta del controlador actual, en lugar de la carpeta raíz

¿Es $ .getJson un método mvc? ¿Es esta una buena solución para mi caso de uso? Solo necesito devolver un url de cadena o una cadena vacía si no se encuentra lo que estoy buscando. ¿Debo incluir un método para $ .getJSon? ¿Es eso parte de MVC o parte de JQuery? ¿La barra diagonal inicial va a apuntar a la raíz de la aplicación o la raíz del servidor?

Intente este post: ¿ Ejemplo básico de AJAX con ASP.NET MVC?

o este: ¿Cómo obtener el objeto Json para desplegar?

Deben darle algunos consejos.

En esencia, $ .getJson es un método jQuery, no uno MVC, pero desea usarlo en combinación con su controlador MVC devolviendo un resultado Json.

Bueno, supongo que estás teniendo problemas con la forma en que se construyen las URL. Si no tiene una barra inclinada antes de la URL, será relativa a su URL actual. Entonces, si la url actual es: /Home/Index y tiene un enlace como este: Text , ese enlace apuntará a la siguiente url: /Home/Index/https://stackoverflow.com/questions/2238658/how-do-i-call-a-controller-method-from-jquery/Ticket/CheckForInstaller . Este es siempre el comportamiento en el navegador. Lo mismo sucede si tiene una página en una carpeta en una aplicación de formularios web. No hay nada diferente con un asp.net mvc url que con cualquier otro framework web. La url que desea es probablemente esta: /https://stackoverflow.com/questions/2238658/how-do-i-call-a-controller-method-from-jquery/Ticket/CheckForInstaller .

Sin embargo, el framework mvc de asp.net sí le proporciona ayudantes para que no tenga que codificar ningún URL. Puedes hacerlo así:

 <%=Url.Action("Ticket", "CheckForInstaller")%> 

Pero lo único que hará esto es encontrar la URL adecuada que apunte a esa acción (“/ Ticket / CheckForInstaller”, dependiendo de sus rutas) y escribirla.

Puede usar $ .getJSON (url, [data], [callback (data)]) donde data es su objeto de datos json devuelto.

Alternativamente, puede usar $ .post (url, [data], [callback (data)]) donde los datos son datos retenidos de la cadena / objeto de datos.

url: es la url relativa a su controlador / acción / script que devuelve json / data.

Los anteriores son métodos jquery y usted debe poder usarlos si ha incluido el archivo jquery js.

Esto es lo que he estado haciendo últimamente, y ha estado funcionando bien.

  1. Obtenga la ruta raíz y guárdela en una entrada oculta (reemplace [con <)

    [input id = “urlBase” type = “hidden” value = “<% = Url.Content (" ~ ")%>” />

  2. Obtenga el valor de esa entrada y guárdelo en js (usando jquery en este caso)

    _urlBase = $ (“# urlBase”). val ();

  3. Usa esa variable para llamar a los controladores

    $ .ajax ({type: “GET”, url: _urlBase + “Controller / Action”, dataType: “json”});

El problema fue la etiqueta webMethod en el controlador, que era necesaria o útil en asp.net, pero no en asp.net mvc