TinyMCE 的 multipart/form-data、ajax 和 textarea 问题
Posted
技术标签:
【中文标题】TinyMCE 的 multipart/form-data、ajax 和 textarea 问题【英文标题】:Issue with multipart/form-data, ajax and textarea with TinyMCE 【发布时间】:2014-06-11 22:29:12 【问题描述】:我正在使用 html/php/ajax/jquery,今天我指出了一个让我发疯的小问题。
我有一个 html 表单:
<form method="POST" enctype="multipart/form-data" name="myForm" id="myForm" action="">
<label class="form-label">Nome</label>
<input name="nome" type="text" class="form-control"><br>
<label class="form-label">Descrizione</label>
<textarea name="descrizione" id="text-editor" placeholder="" class="form-control" rows="10"></textarea>
<label class="form-label">Stato</label>
<select name="stato" id="source" style="width:30%">
<option value="1">Abilitato</option>
<option value="0">Disabilitato</option>
</select>
<h4>Foto profilo</h4>
<input type="hidden" name="MAX_FILE_SIZE" value="20400000" >
<input style="border:0px;" type="file" name="user_foto" id="file">
<div class="form-actions">
<div class="pull-right">
<button type="submit" class="btn btn-success btn-cons"><i class="icon-ok"></i>Inserisci</button>
<button type="button" class="btn btn-white btn-cons" onclick="window.location.href='index.php'">Indietro</button></a>
</div>
</div>
</form>
我正在使用一个 JQuery+Ajax 脚本,它能够在不重新加载页面的情况下触发 php 脚本,并将表单的数据插入到我数据库中的表中:
$(document).ready(function()
$('#myForm').on('submit',function(e)
var formData = new FormData(this);
$.ajax(
url:'inserisciProfessionisti.php',
data: formData,
type:'POST',
async: false,
cache: false,
contentType: false,
processData: false,
success:function(data)
window.location = 'listaProfessionisti.php'
,
error:function(data)
);
e.preventDefault(); //=== To Avoid Page Refresh and Fire the Event "Click"===
);
);
这是我的 php 代码:
<?php
session_start();
session_cache_limiter('nocache');
if(!isset($_SESSION['mail']))
header("location:login.php");
include("include/connect.php");
$conn=mysql_connect($HOST, $USER, $PASSWORD);
$db_ok=mysql_select_db($DB, $conn);
$nome=$_POST['nome'];
$descrizione = $_POST['descrizione'];
....
$comando="INSERT INTO professionisti('nome','descrizione',...)VALUES('$nome','$descrizione',...)";
$ris=mysql_query($comando, $conn) or die("Errore connessione database: " . mysql_error());
...
除了 textarea 内容之外,一切都像魅力一样。似乎 textarea 内容不会传递给我的 php 脚本。
【问题讨论】:
var formData = new FormData($(this)[0]);
与var formData = new FormData(this);
相同
是的,你是对的。我修复了它,但问题仍然存在。
首先,验证您的 HTML。 button
不能是 a
元素的后代,并且您在其中也有未关闭的 div
元素。
好像没问题-i.imgur.com/iogJpLI.jpg
我验证了 HTML。问题再次存在。
【参考方案1】:
问题已解决。
我添加这个onclick="tinyMCE.triggerSave(true,true);"
来提交button
,一切都像一个魅力。
我认为这应该是一个 tinyMCE 错误。
【讨论】:
只是为了让用户知道:2019年这个“bug”还在,所以还是需要这个一线救星:-) 2022 年也是如此。该决议与以往一样有效。以上是关于TinyMCE 的 multipart/form-data、ajax 和 textarea 问题的主要内容,如果未能解决你的问题,请参考以下文章
[转]如何使用multipart/form-data格式上传文件
jmeter实现multipart/form-data类型请求
jmeter实现multipart/form-data类型请求