none
関数の引数をjson形式で受け取りたい RRS feed

  • 質問

  •     $.ajax({
            url: Url
            data: params,
            async: true,
            success: function (data) {

    ・・・

    });

    というjavascriptを実行し、

    Public Sub test(???)

    というajax対応wcfサービスの関数実行したいとかんがえています。

    paramsの中は

        id: {...}
        flg: false
        flg2: true

    となっています。

    ???の部分になんと書けば値を取得できるのでしょうか。

    flgとflg2は、同じ名前を定義することで取得できました。

    idが取得できません。

    できればjsonの文字列で1つの変数に受け取りたいです。

    idは

        [0]: "CCCCCC"
        [1]: "BBBBBBB"
        length: 2

    が入っています。

    よろしくお願いします。


    2011年6月10日 7:44

回答

  • $.ajaxでサービスを呼ぶ場合はaspxにscriptmanagerみたいなのが必要でしょうか?

    それは不要ですが、$.ajaxがAJAX対応WCFサービスの受け付ける形式で送信する必要があります。

    1. まずHTTPでどのようにAJAX通信を行うかご自身で決めます(メソッドやURL、パラメーターの表現方法など)
    2. 決めた内容に従うように$.ajax()の呼び出しを書きます
    3. 決めた内容に従うようにAJAX対応WCFサービスを構成します

    1.がなく、念じただけで$.ajax()が意図通りのHTTPリクエストを送信することがありませんし、同様にAJAX対応WCFサービスが空気を読んで引数を解釈してくれることもありません。

    2011年6月13日 1:24

すべての返信

  • idは

        [0]: "CCCCCC"
        [1]: "BBBBBBB"
        length: 2

    が入っています。

    これはJavaScript上では次のどちらでしょうか?

    • Array
      ["CCCCCC", "BBBBBB"]
    • Object
      { 0: "CCCCCC", 1: "BBBBBB", length: 2 }

    たぶん前者だろうなぁ…。

    # 蛇足ながら、jQueryを使う前に基となっているJavaScriptへの理解も必要ですよ。

    「jsonで受け取りたい」と書かれていますが、できません。

    C#なら

    public void test( string[] id, bool flg, bool flgs2 ){
      ...
    }

    ですが、VBだとなんだろう。 

    Public Sub test( ByVal id() As String, ByVal flg As Boolean, ByVal flg2 As Boolean )

    うーん、ByValとかはわかってません。

    2011年6月11日 0:51
  • ありがとうございます。

    ["CCCCCC", "BBBBBB"] です。

    ByVal id As String() でやってみましたができませんでした。

     

    そこで1つ別の問題もありそうです。

        $.ajax({
            url: Url
            data: params,
            async: true,
            success: function (data) {

    をでバックでF10押して実行すると

    success: function (data) の前にPublic Sub test(???)が実行されません。

    successは戻り値を使うので関数が先だとおもっています。

    Public Sub test(???)はjacascriptが終わってから実行されます。

    $.ajaxでサービスを呼ぶ場合はaspxにscriptmanagerみたいなのが必要でしょうか?

     

    2011年6月12日 12:41
  • $.ajaxでサービスを呼ぶ場合はaspxにscriptmanagerみたいなのが必要でしょうか?

    それは不要ですが、$.ajaxがAJAX対応WCFサービスの受け付ける形式で送信する必要があります。

    1. まずHTTPでどのようにAJAX通信を行うかご自身で決めます(メソッドやURL、パラメーターの表現方法など)
    2. 決めた内容に従うように$.ajax()の呼び出しを書きます
    3. 決めた内容に従うようにAJAX対応WCFサービスを構成します

    1.がなく、念じただけで$.ajax()が意図通りのHTTPリクエストを送信することがありませんし、同様にAJAX対応WCFサービスが空気を読んで引数を解釈してくれることもありません。

    2011年6月13日 1:24
  • ありがとうございます。

     

    successの中でバグがありました。修正したらできました。

    でもFireFoxで動くのにIEでは動かないという奇妙な現象が起きています。

    とりあえず呼び出せたのでOKにします。

     


    2011年6月13日 2:50