我正在调用一个页面,该页面在ajax调用中有一个表单提交。当函数被第二次调用时,它在ajax调用数据中有原始数据。
我在这里只简化了序列化部分:
test_form.php
function form($a, $b) {
?>
<form name="myform" id="myform">
<input type="text" id="a" name="a" value="<?php echo $a; ?>" />
<input type="text" id="b" name="b" value="<?php echo $b; ?>" />
</form>
<script>
console.log($("#myform").serialize());
</script>
<?php
}
然后从一个单独的文件调用:
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" type="text/css" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css">
<link rel="stylesheet" type="text/css" href="//code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css">
<link rel="stylesheet" type="text/css" href="/P3Live/_includes/css/gametypes.css">
<link rel="stylesheet" type="text/css" href="/P3Live/_includes/css/tables.css">
<script src="http://code.jquery.com/jquery-1.11.1.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.3/jquery-ui.min.js"></script>
<script src="/P3Live/_includes/js/general_functions.js"></script>
</head>
<?php
error_reporting(E_ERROR);
include_once("test_form.php");
form("firstA", "firstB");
echo "step # 1 should be started <br />";
form("secondA", "secondB");
echo "step # 2 should be started <br />";
?>
当第二个文件被激发时,结果是:
HTML页面:firstA(输入框1)firstB(输入框2)步骤#1应该启动
secondA(输入框1)secondB(输入框2)步骤#2应该启动
控制台:a=第一a&b=第一个ba-firstA&b=第一个b
您会注意到输入字段是正确的,但底部的序列化数据不是。它为两个结果显示第一次调用时的相同序列化数据。我试着发布一张截图,但没有这样做的信誉点。
如有任何帮助,我们将不胜感激。
您正在创建具有相同ID的两个表单,由于ID是唯一的,因此您将从第一个表单获取数据,因为当存在重复ID时,jQuery会选择重复ID,即具有该ID的第一个元素。
尝试使用唯一ID的创建表单
function form($a, $b, $id) {
?>
<form name="myform" id="<?php echo $id; ?>">
<input type="text" id="a" name="a" value="<?php echo $a; ?>" />
<input type="text" id="b" name="b" value="<?php echo $b; ?>" />
</form>
<script>
console.log($("#<?php echo $id; ?>").serialize());
</script>
<?php
}
然后做
form("firstA", "firstB", "myForm1");
form("secondA", "secondB", "myForm2");
等等。
<?php
function form($a, $b) {
static $i = 0;
?>
<form name="myform<?php echo $i; ?>" id="myform<?php echo $i; ?>">
<input type="text" id="a" name="a" value="<?php echo $a; ?>" />
<input type="text" id="b" name="b" value="<?php echo $b; ?>" />
</form>
<script>
console.log($("#myform<?php echo $i; ?>").serialize());
</script>
<?php
$i++;
}