Php 当我在页面上使用jQueryAjax提交tinyMCE表单时,实际提交到数据库需要两次单击
一个多星期以来,我一直在尝试不同的选择,但似乎没有任何效果。更复杂的是,我在页面上有多个表单,所有表单都需要绑定到同一个提交函数。它们都有不同的ID 以下是我的jQuery的简化版本:Php 当我在页面上使用jQueryAjax提交tinyMCE表单时,实际提交到数据库需要两次单击,php,forms,jquery,tinymce,Php,Forms,Jquery,Tinymce,一个多星期以来,我一直在尝试不同的选择,但似乎没有任何效果。更复杂的是,我在页面上有多个表单,所有表单都需要绑定到同一个提交函数。它们都有不同的ID 以下是我的jQuery的简化版本: $('form').on('submit', function(form){ var data = $(this).serialize(); $.ajax({ type: 'POST', cache: false, url:
$('form').on('submit', function(form){
var data = $(this).serialize();
$.ajax({
type: 'POST',
cache: false,
url: 'inc/process.php',
data: data,
success: function(){
// The following fires on first AND second submit
console.log("Updates have successfully been ajaxed");
}
});
return false;
});
我也尝试过使用$('form').submit()
,结果相同
process.php的相关章节:
$query = 'UPDATE pop_contents
SET ';
$id = $_POST['content_id'];
/* to avoid including in MySQL query later */
unset($_POST['content_id']);
$length = count($_POST);
$count = 0;
foreach($_POST as $col => $value){
$value = trim($value);
$query .= $col."='".escapeString($value);
// don't add comma after last value to update
if(++$count != $length){ $query .= "', "; }
// add space before WHERE clause
else{ $query .= "' "; }
}
$query .= 'WHERE id='.$id;
$update_result = $mysqli->query($query);
我认为问题在于您没有阻止表单的默认操作。试试这个
$('form').bind( 'submit', function(event) {
event.preventDefault(); // added
console.log("Binding"); // changed to console.log
$.ajax({
type: "POST",
url: "inc/process.php",
data: $(this).serialize(),
success: function() {
console.log("Your updates have successfully been added."); // changed to console.log
}
});
});
经过多次拉扯头发和咒骂,我解决了这个问题 TinyMCE编辑器实例不直接编辑
文本区域
,因此为了提交表单,我需要首先从中调用TinyMCE.triggerSave()
。因此,工作代码如下所示:
$('form').on('submit', function(form){
// save TinyMCE instances before serialize
tinyMCE.triggerSave();
var data = $(this).serialize();
$.ajax({
type: 'POST',
cache: false,
url: 'inc/process.php',
data: data,
success: function(){
console.log("Updates have successfully been ajaxed");
}
});
return false;
});
当我通过tinyMce传递Ajax字符串数据时,我很困惑。但是它不是用php保存到数据库中的…然后我使用
tinyMCE.triggerSave();
event.preventDefault();
那好吧
$("#save").click(function() {
tinyMCE.triggerSave();
event.preventDefault();
var data = $(this).serialize();
var position = $("#position").val();
var location = $("#job_location").val();
|
|
|
|
var end_date = $("#end_date").val();
var dataString = '&position='+ position + '&job_location=' + location + '&job_category=' + category + '&job_des=' + job_des +'&job_res='+ job_res + '&job_requ='+ job_requ + '&start_date='+ start_date + '&end_date='+ end_date;
alert(dataString);
$.ajax({
type: "POST",
url: "regis.php",
data: dataString,
success: function(data){
}
});
return false;
});
另一个巧妙的技巧是在tinymce编辑器上设置进度状态,为您提供了添加加载图标的非常简单的方法。解释了如何做到这一点
同样在那篇文章中,使用ed.setContent()可以设置编辑器中显示的文本。我用它来清空编辑器,但只是在一篇成功的文章之后。是否需要在一个页面中有多个表单,而不是一些可以向一个表单添加元素的jquery代码?我相信问题出在您的PHP中,因为正在调用Suces回调函数。您是否已经尝试过使用PHP发送虚拟数据?就像硬编码你的$_post[content\u id]和直接在浏览器上访问PHP?@GeoPhoenix一样,是的,我的设计需要有效地工作。多个表单不应该是一个问题,因为我在过去见过处理这个(和工作)的解决方案。“我就是不能让我的工作。”马塞洛西斯,你能详细说明一下吗?我不太确定我是否理解你建议的测试。PHP第二次肯定能工作,但我不确定这是否与您的评论相关。@MarceloAssis,我将表单操作设置为inc/process.PHP,它在第一次运行时就工作了,这意味着问题在于我的jQuery。谢谢您的建议,但运气不好。看到和以前一样的行为。不过,我更喜欢控制台而不是警报。谢谢你!非常简单的答案。这正是我遇到的,而且效果很好。我喜欢这个网站!如果你问我,我会说这是tinyMCE背后的人应该在引擎盖下处理的事情!许多年后,他来了营救。谢谢