首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在第二次调用时序列化()值错误

问在第二次调用时序列化()值错误
EN

Stack Overflow用户
提问于 2015-06-22 18:51:58
回答 2查看 122关注 0票数 1

我有一个正在调用的页面,它在ajax调用中具有表单提交。当函数第二次被调用时,它在ajax调用数据中有原始数据。

我只在这里用序列化部分简化了这一点:

test_form.php

代码语言:javascript
复制
    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
}

然后从一个单独的文件中调用这一点:

代码语言:javascript
复制
<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=firstA&b=firstB a-firstA&b=firstB b

您会注意到输入字段是正确的,但是底部的序列化数据不是。它显示来自对两个结果的第一个调用的相同序列化数据。我试着发了一张截图,但没有声誉点这样做。

任何帮助都将不胜感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-06-22 18:56:58

您正在使用相同的ID创建两个表单,由于ID是唯一的,所以您从第一个表单中获取数据,因为这是jQuery在存在重复ID时所选择的,第一个元素具有该ID。

尝试创建具有唯一ID的表单

代码语言:javascript
复制
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
}

然后再做

代码语言:javascript
复制
form("firstA", "firstB", "myForm1");
form("secondA", "secondB", "myForm2");

等。

票数 0
EN

Stack Overflow用户

发布于 2015-06-22 19:00:00

这是因为这两种表单的ID是相同的。您必须为第二个表单分配一个新的ID。应该是这样的:

代码语言:javascript
复制
<?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++;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30987607

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档