none
ajax post 表单 问题 RRS feed

  • 问题

  • 在asp.net中ajax异步提交一个表单对象,可以不可以,就是,用post方式提及一个拥有file上传控件的表单,我是用js写的纯js代码。如果,可以提交纯表单的话,为啥我后台或不到值。
    @过&客@
    2010年3月24日 12:28

答案

全部回复

  • jquery可以做到
    2010年3月25日 3:49
  •                          
    var xmlHttp = false;
    function subitmimage() {
        try {
            xmlHttp = new XMLHttpRequest();
        }
        catch (e) {
            try {
                xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
            }
            catch (e) {
                try {
                    xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
                }
                catch (e) {
                    alert("您的浏览器不支持AJAX!");
                    return false;
                }
            }
        }
        if (!xmlHttp) {
            alert("对不起,由于您的浏览器不支持对象");
        }
        if (document.forms.length > 1) {
            for (var fs = 0; fs < document.forms.length; fs++) {
                    for (var es = 0; es < document.forms[fs].elements.length; es++) {
                        if (document.forms[fs].elements[es].type == "button" && document.forms[fs].elements[es].value == "上传") {
                            var from = document.forms[fs];
                    //        if (!xmlHttp) {
                                from.action = "UpLoad_File_Imge_Handler.ashx";
                                from.method = "post";
                                from.enctype = "multipart/form-data";
                                from.submit();
                            }
                            else {
                                xmlHttp.open("post", "UpLoad_File_Imge_Handler.ashx", false);
                               xmlHttp.onreadystatechange = updatePage;
                               // xmlHttp.setRequestHeader("Cache-Control", "no-cache");
                                xmlHttp.setRequestHeader("Content-Type", "multipart/form-data");
                                xmlHttp.send(from); 
                             }
                          }
                    }
            }
          }
        else {
            var from = document.forms[0];
      //      if (!xmlHttp) {
                from.action = "UpLoad_File_Imge_Handler.ashx";
                from.method = "post";
                from.enctype = "multipart/form-data";
                from.submit();
           }
            else {
                xmlHttp.open("post", "UpLoad_File_Imge_Handler.ashx", false);
                xmlHttp.onreadystatechange = updatePage;
              // xmlHttp.setRequestHeader("Cache-Control", "no-cache");
                xmlHttp.setRequestHeader("Content-Type", "multipart/form-data");
                xmlHttp.send(from );
           }
        }
    }
    function updatePage() {
        if (xmlHttp.readyState == 4) {
            if (xmlHttp.status == 200) {
                var response = xmlHttp.responseText;
                alert("响应服务完成!");
                alert(response);
            }
            else if (xmlHttp.status == 404) {
                alert('请求的网址不存在!');
            }
            else {
                alert('错误:错误代码为:' + xmlHttp.status);
            }
        }
    }
    这是我的代码你看看吧
    @过&客@
    • 已建议为答案 Weng Yuli 2010年3月27日 13:54
    2010年3月25日 6:00
  • 你好,

    现在的异步上传都是采用隐藏的iframe来做的。你可以直接使用微软提供的控件。

    你可以参考下面的例子http://www.asp.net/ajax/ajaxcontroltoolkit/Samples/AsyncFileUpload/AsyncFileUpload.aspx

     


    Microsoft Online Community Support
    2010年3月26日 3:47
  • 谢谢啊~但是我要批量上传啊!上传控件是点击一个按钮产生一个file,所以fileid是不可用的。这种方法是合适的。你如果愿意接受我的打扰的话,我可以把原代码给你看看。


    @过&客@
    2010年3月31日 10:39
  • 好的,你可以把代码发到:v-kefc@microsoft.com

    代码尽量独立点,别太复杂。^_^


    Microsoft Online Community Support
    2010年4月1日 1:20
  • 好的,谢谢了
    @过&客@
    2010年4月1日 4:25
  • 你好,

    你的代码里调用到的js没有放进包里面。我发邮件让你重新发一个了。


    Microsoft Online Community Support
    2010年4月1日 5:35
  • 不知道你收到我的消息没,你的文件发给我的时候里面的js文件被IT部门给自动删掉了,我让你重新发到我另外一个邮箱。
    Microsoft Online Community Support
    2010年4月1日 7:33
  • 我又发了一封,不知道你收到没?


    @过&客@
    2010年4月6日 13:11