从ASP.NET中始终未定义Uploadify响应值

时间:2011-03-04 17:17:34

标签: javascript asp.net uploadify

我正在使用Uploadify上传一些带有ASP.NET的图片 我在ASP.NET中使用Response.WriteFile()将上传结果返回给JavaScript。 正如文档中所指定的,我正在使用onAllComplete事件来检查来自ASP.NET的响应字符串。

问题是JavaScript中始终未定义alert(response);

JavaScript代码如下:

$(document).ready(function() {
            var auth = "<% = Request.Cookies[FormsAuthentication.FormsCookieName]==null ? string.Empty : Request.Cookies[FormsAuthentication.FormsCookieName].Value %>";
            $('#btnUpdateProfileImg').uploadify({
                'uploader': '../script/uploadify/uploadify.swf',
                'script': '../uploadprofimg.aspx',
                'cancelImg': '../script/uploadify/cancel.png',
                'folder': '../script/uploadify',
                'scriptData': { 'id': $(this).attr("id"), 'token': auth },
                'onAllComplete': function(event, queueID, fileObj, response, data) {
                    alert(response); 
                }
            });
        });

下面的ASP.NET代码;

protected void Page_Load(object sender, EventArgs e)
    {
        try
        {
            string token = Request.Form["token"].ToString();
            FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(token);
            if (ticket != null)
            {
                var identity = new FormsIdentity(ticket);
                if (identity.IsAuthenticated)
                {
                    HttpPostedFile hpFile = Request.Files["ProfileImage"];      
                    string appPath = HttpContext.Current.Request.ApplicationPath;
                    string fullPath = HttpContext.Current.Request.MapPath(appPath) + @"\avatar\";
                    hpFile.SaveAs(Server.MapPath("~/" + uniqName));
                    Response.ContentType = "text/plain";
                    Response.Write("test");    
                }
            }
        }
        catch (Exception ex)
        {
            Response.Write("test");
        }
    }

FormsAuthenticationTicket对象的原因是在使用Uploadify with Firefox时传递身份验证Cookie。

我见过许多例子Response.Write将值返回给onAllComplete事件。但我得到的都是未定义的。 我还尝试使用Context.Response.Writethis.Response.WriteHttpContext.Current.Response.Write。他们都返回undefined。

任何帮助表示赞赏。 感谢

1 个答案:

答案 0 :(得分:-1)

似乎onAllComplete事件永远不会触发。这可能是因为我自动上传单个文件而不是多个文件。 我发现onComplete事件会触发,我可以使用它。