【发布时间】:2015-07-29 19:50:52
【问题描述】:
我的网站是完全异步的,大多数 html 都是在按下按钮时创建和销毁的,并且每个 html 都会阻止导航。
在这一部分,我生成了一个带有“rate 1 to 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]
表示提交成功,但表单数据为空。从昨天开始我就一直在寻找问题,我很确定我传递的数据错误,但是在谷歌中找不到我没有尝试过的任何东西。
编辑:添加了大多数建议,问题仍然存在。也许html结构是错误的?表单和提交似乎没有关联。
编辑2:我发现了一些很奇怪的东西,在最终代码上似乎有一个额外的结束标记,就像这样
<form id="surveyForm" action="processSurvey.php" method="post"></form>
<h3>Alimentos</h3>
<h4>Sabor</h4>
我不知道这是从哪里来的,但肯定是问题所在。
【问题讨论】:
-
你应该这样做
if(isset($_POST['sabor'])) -
单选按钮和复选框仅在设置时传递。使用
isset() -
您正在使用
id=saborRadio创建多个元素。 ID 必须是唯一的。 -
这只是一个错字。
isset($_POST['radio'])应该是isset($_POST['sabor']),就像@pbolduc 说的那样。 -
我更改了 isset($_POST['radio']) 试图修复代码并忘记将其更改回来,问题仍然存在。更改 Id 的类也没有帮助。
标签: javascript php jquery html ajax