37

jQuery 1.3.2、ASP.NET2.0。PageMethod(WebMethod)に対してAJAX呼び出しを行うと、応答だけでなく、ページ全体/ページ全体が返されます。ページメソッドのブレークポイントは、ヒットしないことを示しています。メソッドに[WebMethod]属性があり、これpublic staticであり、文字列を返し、パラメーターを受け入れません。クラスの一番上に[ScriptService]を追加して、それが役立つかどうかを確認しようとしましたが、うまくいきませんでした。

この投稿JqueryAJAXとASP.NETWebMethodが同じ症状を示したページ全体を返すのを見ましたが、それでも問題が発生します。http://encosia.com/2008/05/29/using-jquery-to-directly-call-aspnet-ajax-page-methods/を読みましたが、これをTに準拠しているように感じますが、それでもラック。

私が行っているjQuery呼び出しは次のとおりです。

jQuery.ajax({
    type: 'POST',
    contentType: 'application/json; charset=utf-8',
    data: '{}',
    dataType: 'json',
    url: 'MyPage.aspx/SomePageMethod',
    success: function(result){
        alert(result);
    }
});

FF3のFirebugによる要求/応答ヘッダーは、次のとおりです。

Response Headers
Server  ASP.NET Development Server/8.0.0.0
Date    Tue, 24 Feb 2009 18:58:27 GMT
X-AspNet-Version    2.0.50727
Cache-Control   private
Content-Type    text/html; charset=utf-8
Content-Length  108558
Connection  Close

Request Headers 
Host    localhost:2624
User-Agent  Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6
Accept  application/json, text/javascript, */*
Accept-Language en-us,en;q=0.5
Accept-Encoding gzip,deflate
Accept-Charset  ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive  300
Connection  keep-alive
Content-Type    application/json; charset=utf-8
X-Requested-With XMLHttpRequest
Referer http://localhost:2624/MyApp/MyPage.aspx
Content-Length  2
Cookie  ASP.NET_SessionId=g1idhx55b5awyi55fvorj055; 

ScriptManagerをページに追加して、それが役に立ったかどうかを確認しましたが、うまくいきませんでした。

助言がありますか?

4

8 に答える 8

28

Page Methods が正しく機能していることをご存知ですか? ScriptManager を使用すると機能しますか?

web.config エントリが欠落しているようです。特に HttpModules セクション。

于 2009-02-24T19:22:18.060 に答える
24

web.config に次の 1 行がありませんでした。

<system.web>
  <httpModules>
    <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
  </httpModules>
</system.web>
于 2009-04-15T17:25:11.747 に答える
13

今日、別の理由でこの問題に再び遭遇しました。

contentType: 'application/json'

また、WebMethod の呼び出しではなく、ページ全体の応答を取得していました。

于 2010-06-16T14:26:37.363 に答える
1

補足としてここにこれを投げます。HTML文字列の文字列変数の長さと、ajaxを呼び出すために使用したWebサイトが次のようになっているために、そのエラーが発生していました。

loc = (loc.substr(loc.length - 1, 1) == "/") ? loc + "Default.aspx" : loc;
        $.ajax({
            type: "POST",
            url: loc + "/" + methodName,
            data: "{" + args + "}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: onSuccess,
            error: onFail
        });

.aspx リンクを正しく抽出できなかったため、loc var を使用する代わりに Web ページをハードコーディングしました。

于 2011-02-15T05:58:00.233 に答える
0

ほぼ 2 時間後、すべてを試した後、最終的に解決しました。@Marvin Zumbado のコメントが役に立ちました。URL に .aspx がありませんでした。これがプログラマーとしての私の最高の瞬間ではないことはわかっています。

于 2017-11-29T17:47:41.223 に答える