2012-03-29 119 views
1

我有以下web服务:如何将JavaScript数组的数组传递给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 2012-03-29 06:08:27

+0

为什么不能?它有什么好处? – 2012-03-29 06:46:51

+1

与使用字符串函数不构建XML的原因相同:您不需要关心转义事件,括号嵌套等。除此之外,您不能简单地将字符串与数组连接,因此您的代码不会'data:JSON.stringify({PassengersInfo:ResultInfo})'工作时会像魅力一样工作。 – ThiefMaster 2012-03-29 06:49:36

回答

0

由于Info是一个Array,在服务器端使用Array。但是在这种情况下,您可以传递Info,而不是将其发送到另一个阵列中,该阵列在您的ajax post方法(即data: Info)中再次包装为object
或者你可以使用ArrayList,因为ResultInfo包含数组(在这种情况下只有一个数组)。在这种情况下,发送了ajax帖子data: ResultInfo

+0

我使用'ArrayList'作为'数据类型',但在萤火虫我得到以下错误: '“无法将\ u0027System.String \ u0027类型的对象转换为\ u0027System.Collections.ArrayList \ u0027“ – 2012-03-29 06:32:43