JQuery的AJAX与ASP.NET WebMethod返回整个页面
我正在做一些简单的testing(准备一个更大的项目),使用JQuery AJAX调用ASP.NET WebMethod。 在我的例子中,我的WebMethod返回一个简单的string。 但是,当我尝试使用JQuery调用它时,我得到的是返回的整个HTML页面内容,而不仅仅是我的string。 我错过了什么?
客户端 :
$(document).ready(function ready() { $("#MyButton").click(function clicked(e) { $.post("Default.aspx/TestMethod", {name:"Bob"}, function(msg) { alert("Data Recieved: " + msg); }, "html" ); }); });
服务器端:
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; } } }
看看这个链接。 我用他的一些其他职位来调用WCF服务成功。 一定要看看相关的文章:
http://encosia.com/2008/05/29/using-jquery-to-directly-call-aspnet-ajax-page-methods/
通读文章,但其本质:
$("#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); } }); });
我觉得我对JQuery的$ .post命令中的“type”参数感到困惑。 在和一些人交谈后,似乎调用WebMethod的返回types必须是“json”。 我正在尝试使用“HTML”。 一旦我把它改为“json”,然后一切正常。 显然,用[WebMethod]装饰的方法只返回JSON,这就是我挂断的地方。
感谢您的回复家伙。
尝试将最后一个参数“html”更改为“文本”。 该参数指定要返回的数据的types。
我有完全相同的问题:WebMethod返回整个HTML页面,而不是预期的数据。 对我来说,解决scheme来自于在〜/ App_Start / RouteConfig.cs中更改以下行:
settings.AutoRedirectMode = RedirectMode.Permanent;
至
settings.AutoRedirectMode = RedirectMode.Off;