试图将javascript数组和int传递给后面的代码

时间:2012-11-20 19:38:30

标签: c# javascript asp.net json

我正在尝试将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 个答案:

答案 0 :(得分:4)

您可以发送复合JSON对象,如下所示:

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

将此传递给AJAX调用中的JSON.Stringify,并将所有对象发送到服务器处理程序。

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

答案 1 :(得分:1)

不确定您是否可以简单地从jquery ajax方法POST到您的代码后面。如果您正在使用MVC进行开发,是的,您可以POST到控制器,但您似乎正在使用Web表单。您可能会更好地将JSON数据保存到<asp:HiddenField />,然后回发。

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

答案 2 :(得分:1)

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

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

答案 3 :(得分:1)

尝试这样的事情:

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

$("#ScarTattoos option:selected").val()会给你一个字符串,所以你需要parseInt()来使它成为一个数字类型。

只需JSON.stringify你的obj并发送它。