1

我正在cfdiv容器中提交文件,但文件的值未提交到处理页面。如果我在 之外提交文件cfdiv,它会看到文件值。但是,如果文件位于容器cfdivdiv容器中,则表单字段未定义。我也添加了 enctype="multipart/form-data"cfform但它仍然无法正常工作。

更新:

这是第一页 (index.cfm)

<div  name="loadcontainer" id="loadcontainer">
    <cfinclude template="homepage.cfm">
</div>

主页.cfm

<cfform name="school_create"   id="school_create" 
      action="pro_create_school.cfm"    
      enctype="multipart/form-data"  
      method="post">

    <cfinput size="50" type="file" id="school_logo" name="school_logo">
    <button  type="submit">Save</button>
</cfform>

单击保存按钮时,在动作处理页面中看不到该form.school_logo值。

我也尝试过使用普通的formandinput而不是 a cfform/cfinput,但是表单在提交时被加载到另一个选项卡中,而不是 div 容器。

4

2 回答 2

1

“文件”是早期 CF 版本中 CFINPUT 的错误“类型”(不确定您使用的是什么版本)。我确实检查了文档,并且在当前版本中是允许的。

同时,改为将您的 CFINPUT 更改为:

<input size="50" type="file" id="school_logo" name="school_logo">

或者更好的是,摆脱<cfform>- 你没有将它用于任何事情并且你不需要它。一个好的 JS 库(jquery)将为您提供更好的验证等功能。

在这种情况下,您可以轻松地做到:

<form name="school_create"   id="school_create" 
      action="pro_create_school.cfm"    
      enctype="multipart/form-data"  
      method="post">

    <input size="50" type="file" id="school_logo" name="school_logo">

    <button  type="submit">Save</button>
</form>

它会按预期工作。Cfform 旨在在原生 CF 时尚中提供简单的验证功能,但在解释 CFML 的教程和书籍之外,几乎没有人使用它。当我们看到它在 CF Webtools 中使用时,我们会尽快对其进行重构。

于 2016-09-19T17:37:24.617 回答
0

我能够<cfinput type="file"..../>使用 ajax 在表单中提交表单和其他表单字段。

<script>
                        function validateForm() {
                            var x = document.forms["add_academic_year"]["start_year"].value;
                            var y = document.forms["add_academic_year"]["end_year"].value;
                            if (x == null || x == "" || y == null || y == "") {
                                alert("Start Year and End Year Must be Selected");
                                return false;
                            }
                            if (y <= x) {
                                alert("End Year must be greater than Start Year ");
                                return false;
                            }

            console.log("submit event");
            var fd = new FormData(document.getElementById("add_academic_year"));
            $.ajax({
              url: "pro_academic_year.cfm",
              type: "POST",
              data: fd,
              enctype: 'multipart/form-data',
              processData: false,  // tell jQuery not to process the data
              contentType: false   // tell jQuery not to set contentType
            }).done(function( response ) {
                // display response in DIV
                $("#loadcontainer").html( response.toString());
            })
           .fail(function(jqXHR, textStatus, errorMessage) {
                // display error in DIV
                $("#outputf").html(errorMessage);
            })            
            return false;

                        }
                        </script>
于 2016-09-26T00:52:53.693 回答