2012-03-29 15 views
1

javascriptからwebserviceに配列の配列を渡すには?私は、Webサービス、次のしている

[webmethod] 
public string MakeReservation(?? PassengersInfo)//what data type use for PassengerInfo 
{ 
} 

とJavaScriptで私は、コードを次のようしています。

var ResultInfo = new Array(); 
    $("#GrdPassengerInformationMakeReservation").find('tr:not(:first)').each(function() { 
     var Info = new Array(); 
     Info.push($(this).find('td:eq(1)').text()); 
     Info.push(($(this).find('td:eq(2)')).find('select').val()); 
     Info.push(($(this).find('td:eq(3)')).find('input').val()); 
     Info.push(($(this).find('td:eq(4)')).find('input').val()); 
     Info.push(($(this).find('td:eq(5)')).find('select').val()); 
     Info.push(($(this).find('td:eq(6)')).find('input').val()); 

     ResultInfo.push(Info); 

    }) 
$.ajax(
    { url: "Ajaxes/Reservation.asmx/MakeReservation", 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     type: "POST", 
     data: "{'PassengersInfo':'" + ResultInfo + "'}", 
     async: false, 
     success: function(data) { 

     } 
}); 

私はResultInfoをwebserviceに渡したいと思います。 Webサービスで使用するデータタイプは何ですか?

+1

お願いします** **文字列関数を使用して手動でJSONを生成しないでください! https://github.com/douglascrockford/JSON-js/blob/master/json2.jsを組み込み、JSON.stringify()を使用してください。 – ThiefMaster

+0

なぜですか?それは何の利益ですか? –

+1

文字列関数を使用してXMLを構築しないのと同じ理由:エスケープや括弧のネストなどは気にしたくありません。そのほかに、単純に文字列を配列に連結することはできません。 'data:JSON.stringify({PassengersInfo:ResultInfo})'はチャームのように動作します。 – ThiefMaster

答えて

0

Infoは、配列なので、サーバ側で配列を使用してください。しかし、その場合はInfoをそのまま渡して別の配列に入れてください。この配列は、ajaxのポストメソッドのobjectに再度ラッパーされます(data: Info)。
ResultInfoに配列(この場合は1つの配列のみ)が含まれているため、ArrayListを使用できます。その場合、data: ResultInfoというアヤックスの投稿を送ってください。

+0

'ArrayList'を' datatype'として使用しましたが、Firebugでエラーが発生しました: '" \ u0027System.String \ u0027のオブジェクトを\ u0027System.Collections.ArrayList \ u0027 "'にタイプ変換することはできません –

関連する問題