2016-06-26 38 views
1

私はAsp.NetでWebアプリケーションを開発していますが、コードの背後にはC#を使用しています。私は正常にクラスオブジェクトをコードビハインドメソッドに渡すコードを書いたが、私はどのようにajaxとjQueryを介して引数として配列を渡すのだろうかと思います。jQuery + Ajax経由でサーバメソッドへの引数として配列を渡す方法

私は何か試しましたが、うまくいきませんでした。ここに私のコードを実行しようとしています

function Test(){ 
var argu = [1, 2]; 
$.ajax({ 
     type: 'POST', 
     url: 'MyPage.aspx/Foo', 
     data: '{args: ' + argu + '}', 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function (response) { 
      // Success 
     }, 
     error: function (response) { 
      // Failed 
     } 
     }); 
} 

これは私のコードビハインドメソッドは、C#で書かれています。

[WebMethod] 
[ScriptMethod] 
public static bool Foo(int[] args) 
{ 
    return true; 
} 

アプリケーションが正常に構築されました。私はブレークポイントを入れましたが、私のコードビハインドメソッドは起動しません。私は疑問に思っていますどこに問題がありますか?私はここで他に何が足りないのですか?

+0

をintに戻ってそれを解析するのデシリアライズすることができます。 [WebMethod] [ScriptMethod]と一緒に[HttpPost]を含める必要があります。また、 'url': '@ Url.Content(、' Foo ')を書き換えて、少なくとも –

答えて

1

よくあるすべてのコードは十分によく似ていますが、問題はコードにdataを渡すことにあると思います。

そうでなければなりません。

data: '{args: ' + JSON.Stringify(argu) + '}' 

そして最後に、あなたのコードは

function Test(){ 
var argu = [1, 2]; 
$.ajax({ 
     type: 'POST', 
     url: 'MyPage.aspx/Foo', 
     data: '{args: ' + JSON.Stringify(argu) + '}', 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function (response) { 
      // Success 
     }, 
     error: function (response) { 
      // Failed 
     } 
     }); 
} 

のような支援を期待する必要があります。

+0

Iあなたのコードを試しました。出来た。手伝ってくれてありがとう。 –

1

問題はどこですか?

あなたが送信していることは、有効なJSONではありません、それはあなたがJSONを作成しようとしないでくださいキーの文字列が

値のための二重引用符が必要ですcontentType: "application/json; charset=utf-8"

を設定するときに送信する$ajaxを言っているものです

data: '{args: ' + argu + '}', 
:JSONは手動で...使用言語は

変更してみてくださいシリアライザに建てられました

data: JSON.stringify({args: argu }), 

に:あなたは、サーバーコードで intを期待しているようです。オブジェクト構造を送信しているときに疑わしいと思われる

1

なぜ単に配列の値をデータに設定してポストを行うのはなぜですか?

function Test(){ 
var argu = [1, 2]; 
$.ajax({ 
     type: 'POST', 
     url: 'MyPage.aspx/Foo', 
     data: argu, 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function (response) { 
      // Success 
     }, 
     error: function (response) { 
      // Failed 
     } 
     }); 
} 

あなたは、バックエンドへの文字列として全体のデータを送信するためにJSON.stringify([1,2])を使用した文字列(というよりも[] int型)などのデータを取得し、[]

+0

$ .ajaxはまだ '$ .param'を使ってシリアル化し、このようにしてコード化された形式で送信します – charlietfl

関連する問題