1

AJAX 呼び出しで開始される Web メソッドがあります。これが私の Web メソッドです。

 [WebMethod(EnableSession=true)]
 public void ProcessAddress(Dictionary<string, string> Header, bool AddrValues)
 {

    _service.ProcessNoMatchModal(Header, AddrValues);
 }

これから呼び出されます:

 $.ajax({
        type: "POST",
        contentType: "application/json; charset=utf-8",
        url: "../Services/Address.asmx/ProcessAddress",
        data: JSON.stringify(data),
        dataType: "json",
        success: function(data) {
            alert("success");
        },
        error: function() { 
            alert("error");
        },
        complete: function() { },
        asynch: false
    });

さらに紛らわしいのは、同じコード ソースを指している 2 つの仮想ディレクトリがあり、1 つ目はこのサービスが機能して利用可能ですが、2 つ目は機能せず、firebug に 404 が表示されることです。

どんなリード/提案も役に立ちます

4

2 に答える 2

0

これは 404 http エラーであるため、URL 設定で作成した相対パス参照 (二重ドットを使用) を非難します。

最初の場所から正しいパスで Web サービスを呼び出し、2 番目からは間違ったパスをターゲットにしています... Fiddler または Chrome Developer Tools を使用して呼び出している実際のパスを見て、正しいかどうかを確認してください。

異なる深さの仮想ディレクトリからこの関数を呼び出す場合は、おそらく相対パス参照を使用せずにルートから開始する方がよいでしょう.次のいずれかが機能するはずです:

url: "Services/Address.asmx/ProcessAddress"
url: document.location.hostname + "/Services/Address.asmx/ProcessAddress"
于 2012-08-31T10:15:08.073 に答える
0

ここから:

  1. メソッドは静的でなければなりません
  2. メソッドは [WebMethod()] で装飾する必要があります
  3. ASP.NET AJAX コールバックを作成する場合は、メソッドを [ScriptMethod()] で装飾する必要があります。
于 2012-08-31T09:25:12.023 に答える