我对PHP很满意,但是jQuery的总体菜鸟,并且无法自动保存表单数据。
在autosave
中每30秒调用dummy.php
函数。我将用于处理的序列化表单数据( - >数据库)发送到savetest.php
。
此时此刻,我仍然坚持这个问题:
如何让savetest.php
“收听”传入的数据并做出反应?
此时,我收到警报'哦不!' (=没有成功)每30秒。
这是我缩短的示例代码:
dummy.php
,摘录1(HTML& PHP):
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<script type="text/javascript" src="../../_include/jquery-1.9.1.min.js"></script>
</head>
<body>
<h1>My Form</h1>
<form name="form1" id="form1" method="post" action="<?php echo $_SERVER['PHP_SELF'] ?>">
<input type="radio" name="item_2_1" id="c_2_1_0" value="0" />
<input type="radio" name="item_2_1" id="c_2_1_1" value="1" />
<input type="radio" name="item_2_1" id="c_2_1_2" value="2" />
<input type="radio" name="item_2_1" id="c_2_1_3" value="3" />
<input type="checkbox" name="item_3_1[]" id="c_3_1_0" value="yes" />
<input type="checkbox" name="item_3_1[]" id="c_3_1_1" value="no" />
<input type="text" name="item_4_1" id="c_4_1_0" />
</form>
dummy.php
,代码段2(jQuery):
<script type="text/javascript">
function autosave() {
jQuery('form').each(function() {
jQuery.ajax({
url: 'savetest.php',
data: {
'autosave' : true,
'formData' : jQuery(this).serialize()},
type: 'POST',
success: function(data){
if(data && data == 'success') {
alert("OK!");
}else{
alert("Oh no!");
}
}// end successful POST function
}); // end jQuery ajax call
}); // end setting up the autosave on every form on the page
}// end function autosave()
jQuery(function($) {
setInterval(autosave, 30 * 1000);
});
</script>
,这是savetest.php
:
if (isset($_POST)) {
var_dump($_POST);
exit();
} else {
echo 'Hi, no $_POST.';
}
不幸的是,仍然是不成功的提醒...... savetest.php
转储array(0){}
: - (
答案 0 :(得分:2)
if(isset($_POST)):
//processing to save autosave
else:
//the rest of your form code and jQuery stuff
endif;
这将检查数据是否已过帐,//rest of your data
应代表未执行任何处理的页面生成的所有其他代码。
另外,我可以建议清理该数据属性吗?
data: {
'navigation': 'save',
'autosave' : true,
'formData' : jQuery(this).serialize()
}
然后,在服务器端,您可以像平常一样访问它,$_POST['navigation']
和$_POST['formData']
包含name=value
组合数组。
此外,您的功能应在$(document).ready
之内,或者如下所示:
jQuery(function($){
//the rest of your code
});
jQuery(function($)
将以$(document).ready
的形式运行,并会在$
内将jQuery
符号别名为{{1}}。
这应涵盖所有基础。