JQuery AJAXを使用してASP.NET WebMethodを呼び出す簡単なテスト(大規模プロジェクトの準備中)を行っています。私の例では、WebMethodは単純な文字列を返します。ただし、JQueryを使用して呼び出すと、文字列だけでなくHTMLページのコンテンツ全体が返されます。私は何が欠けていますか?
クライアント側 :
$(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を呼び出すための戻り値の型は「json」でなければならないようです。 「html」を使用しようとしていました。 「json」に変更すると、すべてが正常に機能しました。そのため、明らかに[WebMethod]で装飾されたメソッドはJSONのみを返し、それが私のハングアップでした。
返信ありがとうございます。
最後のパラメーター「html」を「text」に変更してみてください。このパラメーターは、返されるデータのタイプを指定します。
私はまったく同じ問題を抱えていました。WebMethodは、目的のデータではなくHTMLページ全体を返しました。私にとって、ソリューションは〜/ App_Start/RouteConfig.cs次の行の内部を変更することから生まれました。
settings.AutoRedirectMode = RedirectMode.Permanent;
に
settings.AutoRedirectMode = RedirectMode.Off;