Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery动态表单,PHP$\u文件为空_Javascript_Php_Jquery_Html_Ajax - Fatal编程技术网

Javascript jQuery动态表单,PHP$\u文件为空

Javascript jQuery动态表单,PHP$\u文件为空,javascript,php,jquery,html,ajax,Javascript,Php,Jquery,Html,Ajax,我需要在jQuery中动态创建一个HTML表单,当我单击submit按钮时,我会通过Ajax将表单数据发送到“add_sw.php”,由它来处理表单数据 但是我的问题是,这个PHP脚本无法访问PHP$\u FILES变量,因此该变量为空 以下是与js相关的js代码: <script type="text/javascript"> $("body").on("click", "#submit", function() { var frm = $('#sw_add');

我需要在jQuery中动态创建一个HTML表单,当我单击submit按钮时,我会通过Ajax将表单数据发送到“add_sw.php”,由它来处理表单数据

但是我的问题是,这个PHP脚本无法访问PHP$\u FILES变量,因此该变量为空

以下是与js相关的js代码:

<script type="text/javascript">
  $("body").on("click", "#submit", function() {
    var frm = $('#sw_add');
    frm.submit(function (ev) {
      $.ajax({
        type: frm.attr('method'),
        url: frm.attr('action'),
        data: frm.serialize(),
        success: function (data) {
          alert('ok');
        }
      });

      ev.preventDefault();
    });
  });
</script>

<script type="text/javascript">
  $("body").on("change", "select", function() {
    var tag = $("<div></div>");
    var content = "<form id='sw_add' action='add_sw.php' method='post' enctype='multipart/form-data'>";
    content += "<input type='text' name='sw_name'>";
    content += "<label for='file'>Fájl:</label>";
    content += "<input type='file' name='file' size='40'>";
    content += "<textarea rows='4' cols='50' name='sw_comment'></textarea>";
    content += "<div class='buttons'><button id='submit' type='submit'>Save</button></div>";
    content += "</form>";
    tag.html(content).dialog({title:'Add new software', modal:false, width:500, height:360}).dialog('open');
  });
</script>

$(“正文”)。在(“单击”,“提交”,函数()上{
var frm=$('sw#u add');
提交财务报表(功能(ev){
$.ajax({
类型:frm.attr('method'),
url:frm.attr('action'),
数据:frm.serialize(),
成功:功能(数据){
警报(“正常”);
}
});
ev.preventDefault();
});
});
$(“body”)。在(“更改”、“选择”、函数()上{
变量标记=$(“”);
var-content=“”;
内容+=”;
内容+=“Fájl:”;
内容+=”;
内容+=”;
内容+=“保存”;
内容+=”;
html(content).dialog({title:'addnewsoftware',model:false,width:500,height:360})。dialog('open');
});
PHP脚本的开头:

<?php
  $sw_name    = $_REQUEST['sw_name'];
  $sw_file    = $_FILES['file']['name'];
  $sw_comment = $_REQUEST['sw_comment'];

  // process the form datas...
?>


我的问题是“$sw_file”变量是空的,我没有得到上传的文件名。为什么?

我修改了第一个js脚本,这是一个工作版本

<script type="text/javascript">
  $("body").on("click", "#submit", function() {
    $("#sw_add").submit(function(e) {
      var formObj = $(this);
      var formURL = formObj.attr("action");
      var formData = new FormData(this);
      $.ajax({
        url: formURL,
        type: 'POST',
        data:  formData,
        mimeType: "multipart/form-data",
        contentType: false,
        cache: false,
        processData: false,
        success: function(data, textStatus, jqXHR) {
          alert('ok');
        },
        error: function(jqXHR, textStatus, errorThrown) {
          alert('error');
        }          
      });
      e.preventDefault();
      e.unbind();
    }); 
  });
</script>

$(“正文”)。在(“单击”,“提交”,函数()上{
$(“#软件添加”)。提交(功能(e){
var formObj=$(此项);
var formURL=formObj.attr(“操作”);
var formData=新formData(本);
$.ajax({
url:formURL,
键入:“POST”,
数据:formData,
mimeType:“多部分/表单数据”,
contentType:false,
cache:false,
processData:false,
成功:函数(数据、文本状态、jqXHR){
警报(“正常”);
},
错误:函数(jqXHR、textStatus、errorshown){
警报(“错误”);
}          
});
e、 预防默认值();
e、 解除绑定();
}); 
});

我想我应该在Ajax脚本中输入'enctype'参数。。。