1

コードビハインドで MyMethod から文字列の配列を返す必要があります。しかし、を使用してaspxページで解析しjavascriptますか?

[WebMethod]
public static string[] MyMethod(){
   return new[] {"fdsf", "gfdgdfgf"};
}

..........
function myFunction() {
            $.ajax({ ......
                    success: function (msg) {
                                //how do I parse msg?
                                }
            });
        };
4

3 に答える 3

3

まず、[ScriptService]AJAXを介して呼び出せるように、クラスにタグを付けていることを確認してください。何かのようなもの:

[ScriptService] //<-- Important
public class WebService : System.Web.Services.WebService
{
   [ScriptMethod] //<-- WebMethod is fine here too
   public string[] MyMethod()
   {
      return new[] {"fdsf", "gfdgdfgf"};
   }
}

その後、何も解析する必要がないため、 jQueryを使用して結果を直接読み取ることができます。

$(document).ready(function() {
  $.ajax({
    type: "POST",
    url: "WebService.asmx/MyMethod",
    data: "{}",
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function(msg) {
      // msg.d will be your array with 2 strings
    }
  });
});

別のアプローチは、以下への参照を含めることです。

<script src="WebService.asmx/js" type="text/javascript"></script>

これにより、プロキシクラスが生成され、Webメソッドを直接呼び出すことができます。例えば:

WebService.MyMethod(onComplete, onError);

このonComplete関数は、Webサービス呼び出しの結果を含む単一のパラメーター(この場合は2つの文字列を持つJavascript配列)を受け取ります。私の意見では、これはjQueryを使用してURLとHTTPペイロードについて心配するよりも簡単な解決策です。

于 2012-07-13T21:36:10.593 に答える
0

jQuery イテレータを使用して、msg の結果の文字列を次のように反復処理します。

function myFunction() {
    $.ajax({ ......
        success: function (msg) {
            $.each(msg, function(index, value) {
                alert(value);
            });
        }
    });
};
于 2012-07-13T21:41:40.783 に答える
0

応答には、WebMethod から返された値をラップobjectするオブジェクトが含まれます。d次のようにアクセスするだけです:

function myFunction() {
    $.ajax({ ......
        success: function (msg) {
            //how do I parse msg?
            alert(msg.d); //alerts "fdsf", "gfdgdfgf"
        }
    });
};

説明については、この質問を参照してください。

于 2012-07-13T21:46:10.847 に答える