JQuery AjaxUpload之后服务器控件未更新

时间:2011-05-16 10:25:06

标签: jquery asp.net ajax asp.net-ajax

我使用JQuery AjaxUpload上传图片,并尝试使用上传的图片更新图像控件,但代码无法正常工作,甚至无法设置ViewState。我想知道为什么会这样。以下是代码:

**Javascript:**<br>
<script type="text/javascript">    /*<![CDATA[*/<br>
        $(document).ready(function() {<br>
            /* Example 1 */<br>
            var button = $('#button1'), interval;<br>
            new AjaxUpload(button, {<br>
                action: 'fileupload.aspx',<br>
                name: 'myfile',<br>
                onSubmit: function(file, ext) {<br>
                    // change button text, when user selects file<br>
                    button.text('Uploading');<br>
                    // If you want to allow uploading only 1 file at time,<br>
                    // you can disable upload button<br>
                    // this.disable();<br>
                    // Uploding -> Uploading. -> Uploading...<br>
                    interval = window.setInterval(function() {<br>
                        var text = button.text();<br>
                        if (text.length < 13) {<br>
                            button.text(text + '.');<br>
                        } else {<br>
                            button.text('Uploading');<br>
                        }<br>
                    }, 200);<br>
                },<br>
                onComplete: function(file, response) {<br>
                    button.text('Upload');<br>
                    window.clearInterval(interval);<br>
                    // enable upload button<br>
                    this.enable();<br>
                    // add file to the list<br>
                    $('<li></li>').appendTo('#example1 .files').text(file);<br>
//                    document.getElementById('img').src = 'C:\\Documents and <br>Settings\\Kavita\\My Documents\\Visual Studio 2008\\WebSites\\WebSite2\\ajaxUpload\\' + file;<br>
//                    alert(document.getElementById('img').src);<br>
                }<br>
            });<br>
        });   /*]]>*/</script><br><br>

fileupload.aspx.cs代码

    HttpPostedFile hpfFile = Request.Files["myfile"];
    if (hpfFile != null)
    {
       hpfFile.SaveAs(Server.MapPath("~/ajaxUpload/" + hpfFile.FileName));
       img.Src = Server.MapPath("~/ajaxUpload/" + hpfFile.FileName);
    }<br>

请告诉我为什么“img.Src”没有更新?

1 个答案:

答案 0 :(得分:1)

img.Src正在服务器端进行更新,但是当你进行Ajax调用时,它不会被发送回客户端。

如果要显示图像,必须在onComplete jQuery函数中完成,因为此代码将在客户端执行,此时图像已完全上传。

我还注意到服务器方法出错:您使用Server.MapPath来设置图像源,这是错误的,因为它会将服务器的路径发送给图像(即“C:\ inetpub ...” ),您应该只将值设置为:

img.Src = "~/ajaxUpload/" + hpfFile.FileName;