表格标签过早关闭

时间:2015-07-30 15:37:17

标签: javascript php jquery ajax asynchronous

据我所知,这意味着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(对吧?)我会在修复时发布更新。我应该标记为已回答吗?

2 个答案:

答案 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()工作。