据我所知,这意味着html代码无效,通常是因为嵌套不正确。
通过使用jQuery.ajax()调用的php函数回显,按下按钮生成此表单:
<?php
echo '
<div class="row survey-container text-center">
<form id="surveyForm" action="processSurvey.php" method="post">
<h3>Alimentos</h3>
<h4>Sabor</h4>
<div class="form-group">';
for ($i = 0; $i <= 10; $i++) { // Imprime lista de sabor
echo '
<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>
</div>
';
?>
所有代码都按预期运行但只有一行:
[...]
<form id="surveyForm" action="processSurvey.php" method="post"></form>
[...]
表单一打开就会自动关闭。我打破了一些规则吗?似乎无法找到问题所在。我不认为问题出在js上,但我会把它包括在内
$('body').on('submit', '#surveyForm', function(e){
console.log("Clicked on #surveyForm ");
var data = $(this).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;
});
控制台日志表明一切正常,但没有数据被发送(空数组),这使得考虑到表单过早地关闭自己。
编辑:我想我知道问题是什么,表格是在表格内创建的,这是无效的html(对吧?)我会在修复时发布更新。我应该标记为已回答吗?答案 0 :(得分:5)
您正在序列化按钮,而不是表单。
--MY_BOUNDARY
Content-Type: application/xml
Content-Disposition: form-data
<envelopeDefinition xmlns=\"http://www.docusign.com/restapi\">
<emailBlurb>This is a test email body</emailBlurb>
<emailSubject>This is a test subject</emailSubject>
<status>sent</status>
<compositeTemplates>
<serverTemplates>
<sequence>1</sequence>
<templateId>sometemplateid</templateId>
<inlineTemplates>
<sequence>2</sequence>
<recipients>
<signers>
<email>tester@test.com</email>
<name>test tester</name>
<recipientId>1</recipientId>
<roleName>testrole</roleName>
</signers>
</recipients>
<document>
<documentId>1</documentId>
<name>test.pdf</name>
</document>
</inlineTemplates>
</serverTemplates>
</compositeTemplates>
</envelopeDefinition>
--MY_BOUNDARY
Content-Type: application/pdf
Content-Disposition: file; filename="test.pdf"; documentId=1
答案 1 :(得分:0)
您的数据变量,var&#39; this&#39;是你的按钮, 你在范围事件中。
您应该使用.closest('form')
来.serialize()
工作。