php - 如何从 jquery `formData` 中提取值以插入到 Mysql 中?

标签 php jquery mysql ajax

我的代码是关于通过 $.ajax 提交一个 multipart form,它在 中的 json_encode 上成功完成submit.php ,它给了我这个:

{"success":"Image was submitted","formData":{"fb_link":"https:\/\/www.google.mv\/",
"show_fb":"1",
"filenames":[".\/uploads\/homepage-header-social-icons\/27.jpg"]}}

谁能解释一下,在 submit.php 中,我如何从 formData 中提取值,以存储在 mysql 表中?我已经尝试了很多东西,包括:

 $fb_link = formData['fb_link'];
 $show_fb = formData['show_fb'];

$arr = json_encode($data);
$fb_link=$arr['fb_link'];

$fb_link = REQUEST['fb_link'];
 $show_fb = REQUEST['show_fb'];

但是,似乎没有任何效果?有什么猜测吗?

谢谢

更新: 父页面上的 JS 代码是:

      $(function()
      {
      // Variable to store your files
      var files;

      // Add events
      $('input[type=file]').on('change', prepareUpload);
      $('form#upload_form').on('submit', uploadFiles);

      // Grab the files and set them to our variable
      function prepareUpload(event)
      {
      files = event.target.files;
      }

      // Catch the form submit and upload the files
      function uploadFiles(event)
      {
      event.stopPropagation(); // Stop stuff happening
      event.preventDefault(); // Totally stop stuff happening

      // START A LOADING SPINNER HERE

      // Create a formdata object and add the files
      var data = new FormData();
      $.each(files, function(key, value)
      {
      data.append(key, value);
      });

      //var data = new FormData($(this)[0]);


      $.ajax({
      url: 'jquery_upload_form_submit.php?files=files',
      type: 'POST',
      data: data,

      //data: {data, var1:"fb_link" , var2:"show_fb"},

      cache: false,
      dataType: 'json',
      processData: false, // Don't process the files
      contentType: false, // Set content type to false as jQuery will tell the server its a query string request
      success: function(data, textStatus, jqXHR)
      {
      if(typeof data.error === 'undefined')
      {
      // Success so call function to process the form
      submitForm(event, data);
      }
      else
      {
      // Handle errors here
      console.log('ERRORS: ' + data.error);
      }
      },
      error: function(jqXHR, textStatus, errorThrown)
      {
      // Handle errors here
      console.log('ERRORS: ' + textStatus);
      // STOP LOADING SPINNER
      }
      });
      }

      function submitForm(event, data)
      {
      // Create a jQuery object from the form
      $form = $(event.target);

      // Serialize the form data
      var formData = $form.serialize();

      // You should sterilise the file names
      $.each(data.files, function(key, value)
      {
      formData = formData + '&filenames[]=' + value;
      });

      $.ajax({
      url: 'jquery_upload_form_submit.php',
      type: 'POST',
      data: formData,
      cache: false,
      dataType: 'json',
      success: function(data, textStatus, jqXHR)
      {
      if(typeof data.error === 'undefined')
      {
      // Success so call function to process the form
      console.log('SUCCESS: ' + data.success);
      }
      else
      {
      // Handle errors here
      console.log('ERRORS: ' + data.error);
      }
      },
      error: function(jqXHR, textStatus, errorThrown)
      {
      // Handle errors here
      console.log('ERRORS: ' + textStatus);
      },
      complete: function()
      {
      // STOP LOADING SPINNER
      }
      });
      }
      });

更新代码 - submit.php :

    <?php

    // Here we add server side validation and better error handling :)
    $data = array();
    if(isset($_GET['files'])) {
    $error = false;
    $files = array();

    $uploaddir = './uploads/homepage-header-social-icons/';

    foreach ($_FILES as $file) {

    if (move_uploaded_file($file['tmp_name'], $uploaddir . basename($file['name']))) {
    $files[] = $uploaddir . $file['name'];
    //$files = $uploaddir . $file['name'];
    }


    else {
    $error = true;
    }
    }

    $data = ($error) ? array('error' => 'There was an error uploading your image-files') : array('files' => $files);
    }


    else {

    $data = array(
    'success' => 'Image was submitted',
    'formData' => $_POST
    );
    }

    echo json_encode($data); 



    ?>

最佳答案

如果您在 ajax 中使用 POST 方法,那么您可以在 PHP 中访问这些数据。

print_r($_POST);

使用 ajax 提交表单。

//Program a custom submit function for the form
$("form#data").submit(function(event){
  //disable the default form submission
  event.preventDefault();
  //grab all form data  
  var formData = new FormData($(this)[0]);
  $.ajax({
      url: 'formprocessing.php',
      type: 'POST',
      data: formData,
      async: false,
      cache: false,
      contentType: false,
      processData: false,
      success: function (returndata) {
         alert(returndata);
      }
  });
  return false;
});

您可以在 PHP 上访问数据

$json = '{"countryId":"84","productId":"1","status":"0","opId":"134"}';
$json = json_decode($json, true);
echo $json['countryId'];
echo $json['productId'];
echo $json['status'];
echo $json['opId'];

如果要访问文件对象,需要使用$_FILES

$profileImg = $_FILES['profileImg'];
$displayImg = $_FILES['displayImg'];

关于php - 如何从 jquery `formData` 中提取值以插入到 Mysql 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39686190/

相关文章:

php - 有没有办法使用 PHPExcel 检测 excel 文件是在 windows 还是 mac 上生成的?

php - 如何计算当前日期与另一个日期的差值是否等于或减去天数

javascript - 使用 setTimeout 动态创建多个幻灯片放映

c# - 未触发 Kendo UI DropDownList Change 事件

mysql - 在查询中使用 GROUP_CONCAT 未获得正确的结果

java - MySQL Java语法错误

javascript - PHP 将函数作为函数的参数执行

php - MySQL Select 语句

javascript - HighCharts - 显示心率?

php - 从 JSON 解码数组中检查数组键