【问题标题】:Ajax form sending null data to phpAjax 表单向 php 发送空数据
【发布时间】:2019-06-11 12:32:23
【问题描述】:

我正在尝试使用 AJAX 将表单数据发送到 PHP,但是在 PHP 页面上转储数据时它返回空值。

实际上,我想要一个可以上传图像的程序,而不是弹出式裁剪图像,然后将裁剪后的图像保存在数据库中。

我的代码如下:

$('#fileinput').on('change', function() {
  var formD = new FormData();
  var file = $('#fileinput')[0].files[0];
  // var nfile = file.serializeArray();
  // console.log(file);
  formD.append('file', file);
  formD.append("clientID", 2993);
  console.log(formD);

  $.ajax({
    url: 'croped.php',
    type: 'POST',
    data: {
      'ff': formD
    },
    processData: false,
    contentType: true,
    // dataType: 'json',
    success: function(data) {
      console.log(data);
    }
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form action="" method="POST" enctype="multipart/form-data">
  <input type="file" name="image" id="fileinput" />
  <input type="submit" name="upld" id="upldbtn" />
</form>

croped.php

<?php
var_dump($_POST);
echo "ll";
?>

请让我知道我遗漏了什么或做错了什么。

【问题讨论】:

  • 这是使用ajax上传文件的错误方式
  • 应用 bewlo 代码它可以帮助你并使用
  • FormData 准备了一个完整 表单数据提交集,包括所有参数名称、值等。您通过尝试将其“作为”名为ff 的特定参数发送来使该数据结构无效。您需要发送此 FormData 对象,仅此而已:data: formData

标签: php jquery html ajax forms


【解决方案1】:

试试这个,它对我有用:)

  1. 内容类型:假,
  2. 数据:formD,

例如

  $.ajax({
    url: "croped.php",
    type: "POST",
    data: formD,
    processData: false,
    contentType: false,
    // dataType: 'json',
    success: function (data) {
      console.log(data);
    },
  });

对于php代码

<?php

echo "<pre>";
print_r($_FILES);

【讨论】:

    【解决方案2】:
      <form action = "" method = "POST" enctype = "multipart/form-data" 
            id="formdata">
            <input type = "file" name = "image" id="fileinput" />
            <input type = "submit" name="upld" id="upldbtn" />
       </form>
    
    $("#formdata").submit(function(e) {
    
        e.preventDefault();    
        var formData = new FormData(this);
    
        $.ajax({
        url: window.location.pathname,
        type: 'POST',
        data: formData,
        success: function (data) {
            alert(data)
        },
        cache: false,
        contentType: false,
        processData: false
    });
    });
    

    【讨论】:

    • 不,这也不适合我。这是在 formData:FormData {}__proto__: FormDataappend: ƒ append()delete: ƒ delete()entries: ƒ entries()forEach: ƒ forEach()get: ƒ ()getAll: ƒ has()keys: ƒ keys()arguments: (...)caller: (...)length: 0name: "keys"proto: ƒ ()[[Scopes]]: 范围[0]set: ƒ ()values: ƒ values() 构造函数: ƒ FormData()Symbol(Symbol.iterator): ƒ entries()Symbol(Symbol.toStringTag): "FormData"proto: Object And on the php page : array(0) { } 请建议
    • 我认为你错过了什么
    • 现在我面临这个链接中给出的问题:stackoverflow.com/questions/56576558/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-01
    • 2016-03-09
    • 2014-01-11
    • 2015-06-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多