我有一个我打电话的页面,它在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应该开始
控制台: 一个= firstA和b = firstB 一个-firstA和b = firstB
您会注意到输入字段是正确的,但底部的序列化数据不是。它显示来自第一次调用的两个结果的相同序列化数据。我尝试发布截图,但没有声誉点。
非常感谢任何帮助。
答案 0 :(得分:0)
您正在创建两个具有相同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");
等
答案 1 :(得分:0)
这是因为两种形式的ID都是一样的。您必须为第二个表单分配新ID。它应该是这样的:
<?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++;
}