AJAX和php脚本后添加的表单元素未传输到$_POST


Form elements added after AJAX and php script not transfered to $_POST

我使用AJAX来获取在选择输入中选择的元素的值,并启动一个返回一些输入复选框字段的PHP脚本。

以下是它的样子:

HTML

<form method="post" action="liens_chra.php" name="Form" id="Form">
    <label for="id_turbo">Turbo</label>
    <select name="id_turbo" size="1" id="id_turbo">
        <option value="10970">TM1761178</option> 
        <!-- and more -->
    </select>
    <div id="choix_reffab">
        <!-- checkboxes appear here -->
    </div>
    <p class="form ">
        <input type="submit" name="valider" value="Enregistrer">
    </p>
    <!--    something I tried too
    <input  type="button" id="submitevent" value="Enregister">
    <script type="text/javascript" >
        $('#submitevent').click(function() {
             $("#Form").submit();
        });
    </script> -->
</form>

JQuery/AAJAX

$("#id_turbo").change(function(){
    var id_turbo = $("#id_turbo").val();
    $.ajax({type: "POST",
        url: "<?=URLSITEWEB;?>admin/outils/ajax/liste_Reffab.php",
        data: "id_turbo="+id_turbo+"",
        error: function(){
            /*alert(id_famille+" 'n ne passent pas.");*/
        },
        success: function(data){
            $("#choix_reffab").html(data);
        }
    });
});

PHP

/* things */
foreach ($fabTab as $fab) {
    $chaine .= '<input type="checkbox" "name=tabreffab[]" id="'.$fab.'" value="'.$fab.'" /><label for="'.$fab.'">'.$fab.'</label>';
}
echo $chaine;

因此,当用户选择一个值时,会出现一些复选框。我的问题是我想要的数据没有传输到$_POST,结果是:

var_dump($_POST['tabreffab']) // is NULL, others values are ok

我对AJAX&JQuery,所以我不知道该怎么办。我试着用JQuery提交表单,没有做任何更改。

当您返回复选框时,我收到了您的问题,您的错误是在元素的name属性。

在您的代码中"name=tabreffab[]"替换为name = "tabreffab[]"

$chaine.="$fab.";

上面写的像下面写的代码

$chaine .= '<input type="checkbox" name = "tabreffab[]" id="'.$fab.'" value="'.$fab.'" /><label for="'.$fab.'">'.$fab.'</label>';

复选框值仅在选择值时才会显示在$_POST[]中

试用编辑器

 <?php
    echo "<pre>";
    print_r($_POST);
?>
<form id="sampleName" name ="sampleName" method="post" action="">
   <textarea id="testID" name="textAreaName"></textarea>   
   <input type="text" name="text1" />
   <input type="checkbox" name="check" value="1"/>
   <input type="checkbox" name="check" value="2"/>
   <input type="checkbox" name="check" value="3"/>
   <input type="submit" value="submit">
</form>

问题出在Ajax调用中,特别是data部分。它采用json格式的对象。写这篇文章的正确方法是data:{id_turbo:"id_turbo_value"},而不是您使用的data: "id_turbo="+id_turbo+""