繁体   English   中英

使用jQuery发送动态创建的表单

[英]send dynamically created form with jquery

   ....... while(mysql_fetch_array($loop))
    {..............
    echo '
    <form name="myform" method="POST" action="reply.php">
    <textarea style="width:400px;" name="text'.$idanswer.'" id="text'.$idanswer.'"></    textarea>
    <input type="submit" name="submit'.$idanswer.'" id="submit'.$idanswer.'"     value="Submit">
     <input type="hidden" name="idquest" id="idquest" value="'. $question_id .'">
     <input type="hidden" name="idansw" id="idansw" value="'. $idanswer .'">
     <input type="hidden" name="idsend" id="idsend" value="'. $logOptions_id .'">
     <input type="hidden" name="namer" id="namer" value="'. $usr .'">
     </form>';
     }

效果很好。 但是我想用jquery发送此表单而不刷新页面,而且我不知道如何在函数中传递变量。
我需要这样的东西:

    <script type="text/javascript">
    $(document).ready(function() {
    $('submit'.$idanswer.'').click(function (e) {
            e.preventDefault();
            var dataString = 'text'.$idanswer.'=' + $('#text'.$idanswer.'').val() + '&idquest=' + $("#idquest").val() + '&idansw=' + $("#idansw").val() + '&idsend=' + $("#idsend").val() + '&namer=' + $("#namer").val();
            jQuery.ajax({
            type: "POST",
            url: "reply.php",
            data:dataString,
            success:function(response){
                $("#respond").prepend(response);
                                $('#text'.$idanswer.'').val('');
            },
            error:function (xhr, ajaxOptions, thrownError){
                alert(thrownError);
            }
        });
    });
});
</script>

由于变量,这不起作用。 任何想法?

您需要回显您的php变量

var dataString = 'text <?= $idanswer ?>=' + $('#text<?= $idanswer ?>').val() +&idquest=' + $("#idquest").val() + '&idansw=' + $("#idansw").val() + '&idsend=' + $("#idsend").val() + '&namer=' + $("#namer").val();

只需将每个$phpvar更改为<?= $phpvar; ?> <?= $phpvar; ?><?php echo $phpvar; ?> <?php echo $phpvar; ?>

Php不能与Js混合,但可以嵌入;

这是错误的:

 $('submit'.$idanswer.'')

右边是:

$('submit <?= $idanswer ?>')

要么

$('submit <?php echo $idanswer; ?>')

给每个表单一个唯一的id ,将提交按钮更改为普通按钮input="button"这样它就不会在单击时提交表单,并向按钮添加onclick属性,如下所示:

<form name="myform" id="form'.$idanswer.'" method="POST" action="reply.php">
<input type="button" class="submit" name="submit'.$idanswer.'" id="submit'.$idanswer.'"     value="Submit" onClick="submitForm(\'form'.$idanswer.'\')" />

创建一个ajax函数并使用serialize()方法从每种表单中获取参数,该方法将获取所有表单输入值,而不是手动添加每个表单输入值:

$(document).ready(function() {
    function submitForm(form){
       jQuery.ajax({
            type: "POST",
            url: "reply.php",
            data: $('#' + form).serialize(),
            success:function(response){
                $("#respond").prepend(response);
                                $('#text'.$idanswer.'').val('');
            },
            error:function (xhr, ajaxOptions, thrownError){
                alert(thrownError);
            }
        });
    }
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM