我正在尝试将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)
{
}
答案 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并发送它。