我的网站是完全异步的,大多数HTML都是在按钮按下时创建和销毁的,并且每一个都阻止导航。

在这一部分,我生成一个带有“比率1到10”单选框数组的表单,使用jQuery.ajax()发布该表单,并将其发送到回显(暂时)或回显“未选择任何内容”的过程。

这是表格

<?php
<form id="surveyForm" action="processSurvey.php" method="post">

    <h3>Alimentos</h3>

    <h4>Sabor</h4>
    <div class="form-group">';
        for ($i = 0; $i <= 10; $i++) {
            echo '
                <span class="lead form-options">' .'</span>
                <label class="radio-inline">
                    <input type="radio" name="sabor" id="saborRadio'. $i .'" value="'. $i .'">'. $i.'
                </label>';

        }
        echo '
    </div>

    <div class="form-group">
        <button class="btn btn-default surveyForm-btn" type="submit">Enviar</button>
    </div>

</form>
?>


这是javascript:

$('body').on('click', '.surveyForm', function(){
        console.log("Clicked on .surveyForm-btn");
        var data = $('#surveyForm').serialize();
        console.log( data );
        $.ajax({
            method: "POST",
            url: "processSurvey.php",
            data: data,
            success: function(result){
                console.log("Ajax call to processSurvey success");
                $("#surveyForm").clearForm();
                console.log(result);
                console.log( data );

            }
        });
        return false;
    });


这是php的过程:

<?php
if (isset($_POST['sabor']))   // if ANY of the options was checked
  echo $_POST['sabor'];    // echo the choice
else
  echo "nothing was selected.";
print_r($_POST);
?>


单击提交与选定单选框后,这是控制台:

Clicked on #surveyForm
[EMPTY LINE]
Ajax call to processSurvey success
nothing was selected.
[EMPTY LINE]


这意味着提交成功,但是表单数据为空。自昨天以来,我一直在尝试查找问题,我很确定自己传递的数据有误,但是在Google中找不到我没有尝试过的东西。

编辑:添加了大多数建议,问题仍然存在。也许html结构是错误的?表单和提交似乎没有连接。

编辑2:我发现很奇怪,在最终代码上似乎有一个额外的结束标记,像这样

<form id="surveyForm" action="processSurvey.php" method="post"></form>
    <h3>Alimentos</h3>
    <h4>Sabor</h4>


我不知道那是哪里来的,但绝对是问题所在。

最佳答案

这里有很多笔记

1-您将对form id='surveyForm'button class='surveyForm'感到困惑,因此最好将其更改为button class ='surveyForm_btn'

2-我认为您应该序列化表格而不是按钮

var data = $('#surveyForm').serialize(); // not .surveyForm


3- ID必须是唯一的

4- $("#surveyForm").clearForm(); // not .surveyForm

最后检查所有评论

而且更好用

$('body').on('submit', '#surveyForm', function(){});


编辑答案:
1-请在每一步之后检查所有内容

<form id="surveyForm" action="processSurvey.php" method="post">
   <h3>Alimentos</h3>
   <h4>Sabor</h4>
   <div class="form-group">
    <button class="btn btn-default surveyForm-btn" type="submit">Enviar</button>
   </div>
</form>


在js中

$('body').on('submit', '#surveyForm', function(){
        var data = $(this).serialize();
        $.ajax({
            method: "POST",
            url: "processSurvey.php",
            data: data,
            success: function(result){
                console.log(result);
            }
        });
        return false;
    });


在PHP中

<?php
echo 'Connected successfully';
?>


此代码将在控制台中成功输出Connected ..如果此工作添加了您的for循环并再次进行检查

10-08 06:53