web-dev-qa-db-ja.com

Jquery AJAX ASP.NET WebMethodがページ全体を返す場合

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;
        }
    }
}
37
Dana

このリンクをご覧ください。彼の他の投稿のいくつかを使用して、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);
      }
    });
});
20
JoshBerke

JQueryの$ .postコマンドの「type」パラメーターと混同していたと思います。一部の人々と話した後、WebMethodを呼び出すための戻り値の型は「json」でなければならないようです。 「html」を使用しようとしていました。 「json」に変更すると、すべてが正常に機能しました。そのため、明らかに[WebMethod]で装飾されたメソッドはJSONのみを返し、それが私のハングアップでした。

返信ありがとうございます。

9
Dana

最後のパラメーター「html」を「text」に変更してみてください。このパラメーターは、返されるデータのタイプを指定します。

3
rajesh pillai

私はまったく同じ問題を抱えていました。WebMethodは、目的のデータではなくHTMLページ全体を返しました。私にとって、ソリューションは〜/ App_Start/RouteConfig.cs次の行の内部を変更することから生まれました。

settings.AutoRedirectMode = RedirectMode.Permanent;

settings.AutoRedirectMode = RedirectMode.Off;
0
BernieSF