2010-07-01 70 views
0

我需要从JavaScript发送一个字节数组到一个C#页面方法。 int和字符串变量工作正常,但是当我通过c#代码时,即使我检查它是否在JS中有值,字节数组的“对象”也是null。如何通过Javascript将对象(byteArray)发送到AJAX PageMethod?

 var byteArrayObj = GetBinaryDataFromFile(filePath); 

    var tranAttachmentName = filePath.replace(/^.*\\/, ''); 
    PageMethods.AddFileToTran(tranId, tranAttachmentName, byteArrayObj, RefreshPage, onTimeout, onError); 


    function GetBinaryDataFromFile(strFileName) 
    { 
     var streamObj = new ActiveXObject("ADODB.Stream"); 
     streamObj.Type = 1; 
     streamObj.Open(); 
     streamObj.LoadFromFile(strFileName); 
     var ByteArray = streamObj.Read(); 
     streamObj.Close(); 


     return(ByteArray); 
    } 

C#代码:

[System.Web.Services.WebMethod] 
    public bool AddFileToTran(int tranId, string tranAttachmentName, object byteArrayObj) 
    { 
     DBConnector dbConnectorObj = new DBConnector("cnnDataTracking"); 
     try 
     { ........ 

对象byteArrayObj进来空。

+0

作为一种调试手段,我建议你也使用协议peeker来确保参数进入你的服务器时是正确的。如果客户端是PC,则可以使用Fiddler。 – 2010-07-01 15:15:14

+0

你的字节数组在js中是一个实际的数组类型吗?你有没有尝试使你的页面方法中的byteArrayObj变为byte []而不是System.Object? – 2010-07-01 22:48:56

回答

0

事实证明,使用回传是继续下去的方法。无论如何,它并不需要异步。感谢您的评论。