javascript - 文件上传后是否可以留在页面上并收到“确定”消息?

标签 javascript jquery python html ajax

如果我不使用下面的 JavaScript,则页面会在用户上传并单击“提交”后发生更改。 JavaScript 确保页面保持不变。

问题

使用 HTML 和 JavaScript,页面保持不变,这正是我想要的,并且我获得了单选按钮值。但上传不再有效。

问题

由于上传不再起作用,我做错了什么?

当这有效时,我想要 <div id="status">Click upload</div>更改为<div id="status">Upload complete</div>如果成功,万一这会改变解决方案。

HTML

<html><head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <script src="jquery-2.1.3.min.js"></script>
    <script src="stuff.js"></script>
</head><body>

<form enctype="multipart/form-data" action="/cgi-bin/test.py" method="post">
<input type="radio" name="subject" value="red" /> Red
<input type="radio" name="subject" value="green" /> Green
<p>File: <input type="file" name="filename" /></p>
<p><input type="submit" value="Upload" /></p>
</form>
<br/><br/>
<div id="status">Click upload</div>
</body>
</html>

JS

$(document).ready(function(){
   var $form = $('form');
   $form.submit(function(){
      $.post($(this).attr('action'), $(this).serialize(), function(response){
            // do something here on success
      },'json');
      return false;
   });
});

最佳答案

您无法使用 $.post 进行 ajax 文件上传,您必须使用 $.ajax (或原始 XMLHttpRequest)和 FormData目的。在 $.ajax 中使用 formdata 对象作为数据参数需要将 contentTypeprocessData 设置为 false

   var $form = $('form');
   $form.submit(function(){
      $.ajax({
          url: $(this).attr('action'), 
          type: $(this).attr('method'), 
          data: new FormData(this), 
          contentType: false,
          processData: false,
          success: function(response){
            // do something here on success
          },
          dataType: 'json'
      });
      return false;
   });

关于javascript - 文件上传后是否可以留在页面上并收到“确定”消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28987087/

相关文章:

python - Python 脚本在 Jupyter Notebook 上运行良好,但不能作为 .py 脚本运行?

javascript - 纯 JavaScript - Div 内的 ScrollIntoView

php - 由于 js 注入(inject)而停止 ie 9 使用兼容模式

javascript - 是否有通配符导出为的语法?

javascript - 如何将功能应用于选项选择的标签?

jquery - 等待函数中的所有淡入淡出完成后,才会开始下一个函数

javascript - 如何将 Firestore 日期/时间戳转换为 JS Date()?

jquery - Javascript 事件在 Tablet-pc 中不起作用?

python - 在 PyCharm 与交互式 shell 中运行模块

python - 使用 matplotlib.pcolormesh() 将颜色设置为透明的正确方法?