javascript 通过文件上载将表单定位到目标div

qjp7pelc  于 2022-10-30  发布在  Java
关注(0)|答案(2)|浏览(99)

我目前有一个表单,其中的结果被返回到一个目标div。它工作得很好。除了当我的表单包括一个上传(INPUT TYPE=“FILE”NAME=“PIC_UPLOAD”),在这种情况下,它根本不工作。有什么想法,我错过了什么?这里是目前(工作)的代码
第一个

dl5txlt9

dl5txlt91#

我建议您使用普通的js而不是jQuery...
让HTML成为描述事物如何工作的东西,让js成为一个渐进的增强。
通常,最好的代码是可重用的代码。

async function ajaxify (evt) {
  evt.preventDefault()
  const form = evt.target
  const fd = new FormData(form)
  const res = await fetch(form.action, { method: form.method, body: fd })
  const text = await res.text()
}

$("form").submit(ajaxify)

不需要特定的js逻辑,适用于更多表单。易于从HTML更新、更改和操作,js/css文件可以更静态地托管在某些CDN上

0qx6xfy6

0qx6xfy62#

因此,我能够实现POST'ing表单,通过文件上传和目标div切换到 AJAX .请参阅更新代码:

<script>

    /* attach a submit handler to the form */
    $("#testform").submit(function(event) {

      /* stop form from submitting normally */
      event.preventDefault();

      var form_data = new FormData($('testform')[0]);
        $.ajax({
            type: 'POST',
            url: 'url_to_file_to_process_upload.php',
            data: form_data,
            processData: false,
            contentType: false,
            dataType: "html",
            success: function (data) {
                $('#targetdiv').html(data);
            },
            error: function (xhr, status) {
                alert("Sorry, there was a problem!");
            },
            complete: function (xhr, status) {
                //$('#targetdiv').slideDown('slow')
            }
        });

    });

</script>

相关问题