javascript - 使用可编辑的 div 上传图像

标签 javascript php jquery html ajax

你好,我正在尝试使用 ajax 调用将数据上传到数据库 我已经创建了一个脚本,但问题是我有一个 textarea 但由于某些原因我将该 textarea 更改为可编辑的 div 现在我的问题是我如何获得来自那个 div 的数据

 <form method="POST" action="" id="post" enctype="multipart/form-data" onsubmit="return false;">
                <ul>
                    <li>
                        <i class="fa fa-photo"></i> Upload A Photo / Document
                        <input type="file" name="image" />
                    </li>
                </ul>
                <div id='display'></div>
                <div id="contentbox" contenteditable="true" name="post_dt">
                </div>

                <input type="submit" id="sb_art" class="btn_v2" value="Start Discussion" />
            </form>

这是我为上传数据而创建的 ajax 脚本

$(document).ready(function(e) {
$("#post").on('submit', (function(e) {
    $(document).ajaxStart(function(){
        $("#load").css("display", "block");
    });
    $(document).ajaxComplete(function(){
        $("#load").css("display", "none");
    });

    var form = this;
    var content = $("#contentbox").html();
    $.ajax({
        url         : "url/demo/forums/post_forum",
        type        : "POST",
        data        : {new FormData(this), content: content},
        contentType : false,
        cache       : false,
        processData : false,
        success     : function(data) {
            $("#data_update").prepend($(data).fadeIn('slow'));
            form.reset();
        }
    });
}));
});

最佳答案

您正在使用正确的方法从可编辑元素中获取内容:html()。您的问题是您如何发送数据。通过 FormData 发送二进制数据时,您不能将其放入要编码的对象中。相反,附加数据必须使用 append() 添加到 FormData。试试这个:

$("#post").on('submit', function(e) {
  $("#load").show();
  var form = this;
  var formData = new FormData(this);
  formData.append('content', $("#contentbox").html());

  $.ajax({
    url: "http://tfsquare.com/demo/forums/post_forum",
    type: "POST",
    data: formData,
    contentType: false,
    cache: false,
    processData: false,
    success: function(data) {
      $("#data_update").prepend($(data).fadeIn('slow'));
      form.reset();
      $("#contentbox").empty();
    },
    complete: function() {
      $("#load").hide();
    }
  });
});

另请注意,我将您对 ajaxStart()ajaxComplete() 的使用更改为使用 complete 方法。在每次提交表单时定义新的全局 AJAX 处理程序是相当多余的。

关于javascript - 使用可编辑的 div 上传图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42759532/

相关文章:

javascript - Angular.js 仅加载一半时间

java - 单线程异步处理

php - cUrl 可以转换成 Javascript 吗?

javascript - 想要播放音频并且应该在 10 秒后在 Html 和 javascript 中停止?

php - 从外部服务器使用 Sendmail

jquery - 使用 jquery mobile 进行 iscroll 页面转换

php - 保留 Javascript 的页面更新并运行 PHP 代码?

php - 什么是 EXT_NOP 和 EXT_STMT,PHP Opcode

javascript - 在 jQuery 中使用 CSS 悬停(语法)

javascript - 连续返回元素的位置