我有一个HTML表单,部分用PHP生成,部分用AJAX(我是新手),我已经让脚本按预期工作了,我可以收集PHP生成的脚本,但不是AJAX制作的那些。这是表格:
- 编辑:更改了脚本的位置,并在受影响的POST上将“id”重命名为“name”,但无济于事。
index.jquery.php
echo " <form method='POST'>"; //Här börjar formuläret man fyller i.
echo " <p>Sällskapets namn: <input type='text' name='groupname' class='required'/></p>";
echo " <p>Antal deltagare: <select name='participantsAmount' id='participantsAmount' data-mini='true'>"; //Nu börjar dropdown-listan över antal deltagare
echo " <option value='0'>Välj antal</option>";
for ($i = 1; $i < 11; $i++)
{
echo "<option value='$i'>$i</option>";
}
echo " </select>";
echo " <div id='participants_added'>"; //I det här området skrivs alla deltagar-entryn ut från AJAX-koden nedan
echo " </div>";
echo " </form>";
if(isset($_POST['submitform']))
{
$groupname = $_POST['groupname'];
$misc = $_POST['misc'];
$email = $_POST['email'];
$participants = $_POST['participantsAmount'];
for($i = 0; $i < $participants; $i++)
{
$participant_name = $_POST['participant_name['.$i.']'];
$participant_age = $_POST['participant_age['.$i.']'];
$allergies = $_POST['allergies['.$i.']'];
$sql = mysql_query("INSERT INTO submits (name, allergies, misc, age, email, groupname) VALUES ('$participant_name', '$allergies', '$misc', '$participant_age', '$email', '$groupname')")or die(mysql_error());
}
}
?>
<script>
var html = ''; //Allting som hamnar i den här variabeln skrivs ut i slutet av skriptet.
$(document).on('change', '#participantsAmount', function() { //AJAX-delen som lägger till deltagar-rutorna (namn1, ålder. namn2, ålder etc.)
participants = $(this).val();
html = '';
for (var i = 0; i < participants; i++) {
var j = i + 1;
html += '<fieldset class="ui-grid-a"><div class="ui-block-a"><label for="participant_name['+i+']">Namn ' + j + '</label><input type="text" name="participant_name['+i+']" placeholder="Namn"/></div>';
html += '<div class="ui-block-b"><label for="participant_age['+i+']">Ålder</label><input type="text" name="participant_age['+i+']" placeholder="Ålder" /></div>';
html += '</fieldset>';
html += '<p><label for="allergies['+i+']">Matrestriktioner/Födoämnesallergier</label><input type="text" name="allergies['+1+']" placeholder="Allergier" /></p>';
}
html += '<p><label for="misc">Övrigt</label><textarea name="misc" id="misc"></textarea></p>';
html += '<p><label for="email">E-postadress</label><input type="text" name="email" id="email" class="required email" placeholder="E-postadress" /></p>';
html += '<p><input type="submit" name="submitform" value="Skicka anmälan" /></p>';
$('#participants_added').html(html);
//$('#participantsAdded').append('<input type="submit" value="Submit" />');
$('.ui-page').trigger('create');
});
</script>
如前所述,我可以收集和存储电子邮件,groupname和misc POST,但不能收集和存储任何其他邮件。据我所知,我需要AJAX脚本用于事件监听器功能,否则我可能会把它留下来。任何帮助表示赞赏。
答案 0 :(得分:0)
问题很简单:您忘记在循环中为表单字段添加name
属性:
<input type="text" id="participant_name['+i+']" placeholder="Namn"/>
应该是:
<input type="text" name="participant_name['+i+']" placeholder="Namn"/>
等
我认为您不能使用id="participant_name['+i+']"
之类的内容,因为[
和]
字符不是allowed in an id。
除此之外,你的方法看起来有点奇怪,整个javascript部分都放在你用javascript的结果覆盖的div
中。我会把javascript放在其他地方,以避免潜在的问题,虽然我从来没有真正尝试过这个......