传递JavaScript数组长到代码后面?

时间:2009-09-07 17:13:01

标签: javascript vb.net arrays activex object

我已经从签名设备返回了对象,当我快速观察它时,它告诉我它是一个很长的数组,当我将它传递给我的代码后面的web方法(vb.net)时它什么也没给我。 我需要一些帮助.. 注意:我正在使用activeX从设备中捕获签名。

这是javascript代码:

function OnSave() {
    var sign = document.FORM1.SigPlus1.SignatureString;
    PageMethods.Save(sign);
    }

这是我的网络方法:

<WebMethod()> _
Public Shared Function Save(ByVal obj As Object) As String

    Dim obj1 As New PFSIGNATURELib.SigniShellSignature
    obj1.SignatureMime = obj
    obj1.SaveBitmapToFile(System.AppDomain.CurrentDomain.BaseDirectory() & "\sign1.bmp", 200, 200)

    Return "\sign1.bmp"
End Function

1 个答案:

答案 0 :(得分:1)

我对ASP.Net不太了解,但似乎PageMethods.Save函数无法处理长数组。另一种可能性是javascript代码中sign变量为空。

尝试添加

alert(sign);

在你的Javascript函数中间,或者更好的是,安装firebug并执行

console.log(sign);

代替。通过这种方式,您可以确保sign var实际上包含您的想法。

如果确实包含数组(javascript没有long类型),可能需要在调用PageMethods.Save函数之前将其转换为其他内容。

例如,此javascript代码段会将sign转换为以空格分隔的数字字符串:

s = ""
for (i in sign) {
    s += sign[i] + " ";
}
sign = s

如果您设法将此字符串传递给webmethod,则可以使用一些字符串解析来恢复原始数组。