2012-11-20 56 views
0

我正尝试在后面的代码中将JavaScript数组传递给方法。问题是,我需要将int传递给数组。当我这样做:尝试将javascript数组和int传递给代码隐藏

$.ajax({ 
       type: "POST", 
       url: webMethod, 
       data: JSON.stringify({ myArray : passedArray }), 

它的工作原理。但现在我似乎无法弄清楚如何将数组传递给后面的代码和一个int。 我需要用数组传递这样的:

"{'selectID' : '" + $("#ScarTattoos option:selected").val() 

,因为我的方法外观和数据:

public markItem getMarkNoID(int selectID, string[] person) 
{ 
} 

回答

4

您可以发送复合JSON对象,像这样:

{ 
    myArray: passedArray, 
    selectID: $("#ScarTattoos option:selected").val() 
} 

在你的AJAX调用它传递给JSON.Stringify两者所需的对象将被发送到服务器的处理程序。

您必须手动将其反序列化,除非您将其发送到Web服务,而Web服务通常基于参数名称(在JSON模式下)执行反序列化。

+0

我的方法是一个web sservice – john

+2

然后确保JSON对象中的字段与方法参数具有相同的名称 - 在您的情况下,选择ID为“selectID”,数组为“person”。 –

1

不知道,你可以简单的职位从一个jQuery AJAX方法背后的代码。如果您使用MVC进行开发,那么您可以发布到控制器,但您似乎正在使用Web窗体。您可能会有更好的运气将您的JSON数据保存到<asp:HiddenField />,然后发回。

通过在服务器上调用Page.ClientScript.GetPostBackEventReference()方法,然后将结果传递到客户端JavaScript代码以供以后调用,您可以获得所需的Postback JavaScript代码。

1

我会建议将数组和int添加到一个对象并对该对象进行字符串化。

var theID = $("#ScarTattoos option:selected").val(); 
var array = passedarray; 
var PassObj = { selectID: theID, person: array}; 
1

尝试是这样的:

var obj = { 
    selectID: parseInt($("#ScarTattoos option:selected").val(), 10), 
    myArray: passedArray 
}; 

$("#ScarTattoos option:selected").val()会给你一个字符串,所以你需要parseInt函数(),使其号码类型。

Just JSON.stringify你的obj并发送它。

相关问题