Jquery AJAX con ASP.NET WebMethod devolviendo toda la página

Estoy haciendo algunas pruebas simples (en preparación para un proyecto más grande) para llamar a ASP.NET WebMethod usando JQuery AJAX. En mi ejemplo, mi WebMethod devuelve una cadena simple. Sin embargo, cuando bash llamarlo usando JQuery, obtengo el contenido completo de la página HTML devuelto en lugar de solo mi cadena. ¿Qué me estoy perdiendo?

Lado del cliente :

$(document).ready(function ready() { $("#MyButton").click(function clicked(e) { $.post("Default.aspx/TestMethod", {name:"Bob"}, function(msg) { alert("Data Recieved: " + msg); }, "html" ); }); }); 

Lado del servidor:

 using System; using System.Web.Services; namespace JqueryAjaxText { public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } [WebMethod] public static string TestMethod(string name) { return "The value submitted was " + name; } } } 

Mira este enlace. Utilicé algunas de sus otras publicaciones para llamar al servicio de WCF con éxito. Asegúrese de revisar los artículos relacionados:

http://encosia.com/2008/05/29/using-jquery-to-directly-call-aspnet-ajax-page-methods/

Lea el artículo pero es esencialmente:

  $("#Result").click(function() { $.ajax({ type: "POST", url: "Default.aspx/GetDate", data: "{}", contentType: "application/json; charset=utf-8", dataType: "json", success: function(msg) { $("#Result").text(msg.d); } }); }); 

Creo que estaba confundido con el parámetro “tipo” en el comando $ .post de JQuery. Después de hablar con algunas personas, parece que el tipo de devolución para llamar a un WebMethod DEBE ser “json”. Estaba tratando de usar “html”. Una vez lo cambié a “json” y luego todo funcionó como siempre. Entonces, aparentemente, un método decorado con [WebMethod] solo devuelve JSON, y ahí es donde estaba mi colgado.

Gracias por sus respuestas chicos.

Intenta cambiar el último parámetro “html” por “texto”. Este parámetro especifica el tipo de datos que se devolverán.

Tuve exactamente el mismo problema: WebMethod devolvió la página HTML completa en lugar de los datos previstos. Para mí, la solución vino de cambiar dentro de ~ / App_Start / RouteConfig.cs la siguiente línea:

 settings.AutoRedirectMode = RedirectMode.Permanent; 

a

 settings.AutoRedirectMode = RedirectMode.Off;