2011-11-01 2 views
12

jQuery Ajaxを使用してC#ASP.NET Webサービスに文字列パラメータの配列を渡そうとしています。ここに私のサンプルWebメソッドがあります。この関数は、可変数のパラメータを受け入れることに注意してください。 jqueryを実行すると、Chromeのjavascriptコンソールに500個の内部サーバーエラーが発生します。jQuery AJAXを使用して可変数の引数を使用して文字列の配列を渡します。

$(document).ready(function() { 

    var myCars=new Array(); 
    myCars[0]="Saab";  
    myCars[1]="Volvo"; 
    myCars[2]="BMW"; 

    $.ajax({ 
     type: "POST", 
     url: "WebService.asmx/Concat", 
     data: {arr: myCars},  //can't figure out what to put here  
     success: onSuccess, 
     Error: onError 
    }); 
}); 

function onSuccess() 
{ 
    alert("testing"); 
} 

function onError() 
{ 
    alert("fail"); 
} 

</script> 

すべてのヘルプは高く評価されています。私はここではjQueryの1.6.2と.NET3.5

[WebMethod] 
public string Concat(params string[] arr) 
{ 
    string result = ""; 
    for (int i = 0; i < arr.Length; i++) 
    { 
     result += arr[i]; 
    } 
    return result; 
} 

を使用してjQueryのですよ!

[System.Web.Script.Services.ScriptService] 

改訂クライアント側のコード:あなたのWebServiceクラス宣言の上にこれを追加し、また

[WebMethod] 
public string Concat(List<string> arr) 
{ 
    string result = ""; 
    for (int i = 0; i < arr.Count; i++) 
    { 
     result += arr[i]; 
    } 
    return result; 
} 

:サーバー側のコードを改訂

+0

おそらく、あなた可能性[シリアル化](http://api.jquery.com/serialize/)の配列をし、サービスで。 – Shomz

答えて

21

また

$(document).ready(function() { 

     var myCars = new Array(); 
     myCars[0] = "Saab"; 
     myCars[1] = "Volvo"; 
     myCars[2] = "BMW"; 

     $.ajax({ 
      type: "POST", 
      url: "WebService.asmx/Concat", 
      data: JSON.stringify({ arr: myCars }), 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      success: onSuccess, 
      failure: onError 
     }); 
    }); 

    function onSuccess(response) { 
     alert(response.d); 
    } 

    function onError() { 
     alert("fail"); 
    } 

、追加そのスクリプトの上に、JSON2への参照をブロックします。例えば、

<script src="http://ajax.cdnjs.com/ajax/libs/json2/20110223/json2.js"></script> 

注:

  • 私は、.NET 4とjQuery 1.6.4を使用しての下で、これをテストしています。
  • あなたが同期して、クライアントとサーバー変数名を保持していることを確認します。その後、アンシリアライズそれを
    public string Concat(List<string> arr)
    data: JSON.stringify({ arr: myCars })
+0

ありがとう!それはうまくいった。 – orikon

+0

私は今これをjqGridで使うように拡張しようとしていますが、それはうまくいかないでしょうか?私はここで別の質問を開いた:http://stackoverflow.com/questions/7975662/passing-array-of-strings-to-jqgrid – orikon

+0

私はそれを動作させるために静的なinorderとして私のサーバー側の方法を作らなければならなかった。例:public static string Concat(リスト arr) –

関連する問題