无法获取属性'的值;提交':对象为null或未定义

Unable to get value of the property 'submit': object is null or undefined

本文关键字:对象 未定义 null 的值 获取 属性 提交      更新时间:2023-09-26

我有一个iframe和表单,如下所示:

<iframe id="FileUploadFrame" name="FileUploadFrame" src="" style="display: none; border: 0; width: 0; height: 0;">
            <form id="FileUploadForm" name="FileUploadForm" accept-charset="utf-8"  target="FileUploadFrame" enctype="multipart/form-data" encoding="multipart/form-data" method="POST" action="CIMtrek_Regional_WhseForm_FileUpload">
   </form>
</iframe>

这就是我在iframe 中提交表格的方式

function fileUpload() {
    //var UploadForm = document.forms["FileUploadForm"];
    var UploadForm = global.forms["FileUploadForm"];
    alert("Form : "+typeof global.forms["FileUploadForm"]);
    alert("Form : "+typeof global.forms["FileUploadFrame"]);
    iframeId = document.getElementById("FileUploadFrame");

    // Add event...
    var eventHandler = function () {
        if (iframeId.detachEvent) iframeId.detachEvent("onload", eventHandler);
        else iframeId.removeEventListener("load", eventHandler, false);
        // Message from server...
        if (iframeId.contentDocument) {
            content = iframeId.contentDocument.body.innerHTML;
        } else if (iframeId.contentWindow) {
            content = iframeId.contentWindow.document.body.innerHTML;
        } else if (iframeId.document) {
            content = iframeId.document.body.innerHTML;
        }
        document.getElementById(div_id).innerHTML = content;
    }
    if (iframeId.addEventListener) iframeId.addEventListener("load", eventHandler, true);
    if (iframeId.attachEvent) iframeId.attachEvent("onload", eventHandler);
    //alert('submitting form');
    //form.submit();
    //document.forms["FileUploadForm"].submit();
    alert(UploadForm.submit());
}

但我在提交表格时遇到了以下异常:

Error: Unable to get value of the property 'submit': object is null or undefined

请帮我找到问题并解决。

向致以最诚挚的问候

获取FileUploadForm的方法是:

iframeId = document.getElementById("FileUploadFrame");
//This is the trick
var ifrDoc = iframeId.contentDocument || iframeId.contentWindow.document;
var UploadForm = ifrDoc.getElementById("FileUploadForm");

或者,您可以在框架中有一些代码,将parent中的变量设置为表单,但我不相信这种方法。

来源:访问iframe 中的表单


编辑:

此外,为了使上传表格有效,它需要看起来像任何其他表格,除了:

  • 表单标记必须指定POST方法
  • 表单标记必须指定multipart/form-data的enctype
  • 表单必须包含CCD_ 5元素

没有document.forms["FileUploadForm"],因为您的表单在iframe中。iframe的document与执行脚本的document不同。

在您的脚本中,在函数的开头添加这一行

var iframe = document.getElementById('FileUploadFrame');
var innerDoc = iframe.contentDocument || iframe.contentWindow.document;
var UploadForm = innerDoc.forms["FileUploadForm"];