我已经从签名设备返回了对象,当我快速观察它时,它告诉我它是一个很长的数组,当我将它传递给我的代码后面的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
答案 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,则可以使用一些字符串解析来恢复原始数组。