【问题标题】:Uploading image and data using ajax and php使用 ajax 和 php 上传图像和数据
【发布时间】:2017-11-11 05:17:01
【问题描述】:

我正在尝试将名字、姓氏、描述和图像路径上传到 MySql 数据库。并将上传的图片移动到特定文件夹。

这是我的 ajax 函数

formData = new FormData(addPeopleForm);
var file_data = $('input[type="file"]')[0].file;
formData.append("file", file_data);

$.ajax({
  type: "POST",
  url: "functions.php",
  contentType: false,
  cache: false,
  processData: false,
  data: {
    function: "savepeople",
    data: formData
  }, success: function(data){
      console.log(data);
      getPeople();
  }

});

functions.php

if(isset($_POST['function'])){
 $f = $_POST['function'];

 if($f == "savepeople"){
  require_once("config.php");   
  echo $_POST['firstname'];
  .
  .
  .

【问题讨论】:

  • 您是否尝试在 formData 中附加函数变量?
  • 我只是这样做了,一切都很好:)还是谢谢:)
  • 乐于助人:)

标签: php mysql ajax pdo image-uploading


【解决方案1】:

您不能通过ajax调用直接将图像发送到php文件,您必须在表单定义时采用enctype="multipart/form-data"格式

并在ajax调用时替换此代码以进行文件上传

在formdata中追加文件使用下面的代码

formData = new FormData(); //your form name 
var file_data = $('input[type="file"]')[0].file;
formData.append("file", file_data);
formData.append("function","savepeople"); // new variable for your php condition



$.ajax({
    url: "YOUR_FILE_PATH",
    type: "POST",
    data: formData,
    contentType: false,
    cache: false,
    processData: false,
    success: function(data) {
    // success operation here
    },

在 php 方面,您必须使用 $_FILES['YOUR_FILE_NAME'] 而不是 $_POST['YOUR_FILE_NAME'] 来访问服务器上上传的文件。

【讨论】:

  • 好的,那我该如何回显名字呢? echo $_POST['firstname']?
  • 是的,你是对的,你可以使用echo $_POST['firstname'];来回显名字值
  • 好吧,我不能这么简单。我通过将函数 POST 值作为数据传递来使用 ajax 调用特定的 php 函数,但是使用 formdata 我不能这样做,所以无论如何我都没有调用特定的函数。再次查看我的 php 函数,我对其进行了一些编辑以使其更有意义。
  • 你可以在formdata中添加任意数量的数据,方法是在formdata中附加一个get变量
  • 查看我的新代码以了解如何将函数值作为新变量传递
【解决方案2】:

你可以试试这个代码

$.ajax({
    type:'POST',
    url:'functions.php',     
    data:new FormData($('#my_form')[0]),
    cache: false,
    contentType: false,
    processData: false,
    success:function(msg)
    {
         console.log(msg);
    }
});
return false;

#my_form 是您的表单 ID

【讨论】:

  • 这可行,但在我的情况下不行,因为我将两个变量传递给 php,首先决定运行哪个 if 语句,然后保存所有数据。
  • @Troutfisher 你传递了哪两个变量?
  • 数据:{函数:“savepeople”,数据:formData },
【解决方案3】:
var formData = new FormData($(this)[0]);
var action = "savepeople";

    $.ajax({
        url  : 'functions.php',
    type : 'POST',
    data: {action:action,formData:formData},
    contentType: false,
    cache: false,
    processData:false,
    async : false,
    , success: function(data){
console.log(data);
getPeople();
}
});

functions.php

if(isset($_POST['action']) && $_POST['action'] == "savepeople"){


    //TO DO CODE
}

【讨论】:

    猜你喜欢
    • 2015-05-29
    • 1970-01-01
    • 2010-12-06
    • 2014-12-02
    • 2016-08-10
    • 2019-02-18
    • 1970-01-01
    • 2021-08-14
    相关资源
    最近更新 更多