【问题标题】:How to submit a form with AJAX and return a summary of the input values如何使用 AJAX 提交表单并返回输入值的摘要
【发布时间】:2011-05-11 02:55:50
【问题描述】:

我有一个多部分表单,并且正在使用 jQuery 表单插件。

当用户完成表单的一部分并单击“继续”时,我想将该信息发送到服务器,然后在同一页面上提供提交信息的摘要。使用我当前的代码,除非在提交之前完成所有字段,否则我会收到错误消息。我的猜测是我的 PHP 完全错误,并且我在“数据:”之后输入的信息也不正确。

关于如何使其正常工作的任何建议?

PHP:

$return['message'] = array(); 

if ($_POST['markName1']) {
$return['message'][]='Text' . $_POST['markName1'];
}

if ($_POST['markDescription1']) {
$return['message'][]='More text' . $_POST['markDescription1'];
}

 if ($_POST['YesNo1']) {
$return['message'][]='' . $_POST['YesNo1'];
}

echo json_encode($return);

jQuery:

$(form).ajaxSubmit({                
   type: "POST",
   data: {
          "markName1" : $('#markName1').val(),
          "markDescription1" : $('#markDescription1').val()
                       },
   dataType: 'json',
   url: './includes/ajaxtest3.php',
 //...
   error: function() {alert("error!");},                    
   success: $('#output2').html(data.message.join('<br />'))
//...

HTML:

<form id="mark-form">
 <div class="markSelection">
    <input type="checkbox" >
      <label for="standardCharacter"></label>
              <span class="markName-field field">
                <label for="markName1" ></label>
                <input type="text" name="markName1" id="markName1">
              </span>   
         <label for="markDescription1"></label>
         <textarea id="markDescription1" name="markDescription1"></textarea>
       <ul class="YesNo">
         <li>
           <input type="radio" name="YesNo1" value="Yes">
             <label for="Yes">Yes</label>
         </li>
         <li>
           <input type="radio" name="YesNo1" value="No">
           <label for="No">No</label>
         </li>
       </ul>
  </div>
  <div class="step-section">
    <p>
    <span class="next-step">
      <button id="submit-second" class="submit" type="submit" name="next">Next</button>
    </span>
   </p>
 </div>
</form> 

【问题讨论】:

标签: php jquery ajax multipartform-data


【解决方案1】:

markName1:$('#markName1').val()markDescription1 : $('#markDescription1').val() 不需要引号

尝试将此作为您的成功回调

success: function(html) {
        alert(html);
    }

你应该把你的 PHP 改成这样:

$markName1 = $_POST['markName1'];
$markDescription1 = $_POST['markDescription1'];
$YesNo1 = $_POST['YesNo1'];

if(!empty($markName1)){
echo 'Text' . $markName1;
}
if(!empty($markDescription1)){
echo 'More Text' . $markDescription1;
}
if(!empty($YesNo1)){
echo $YesNo1;
}

注意我把成功函数数据类型改为html

编辑 2

&lt;form&gt; 之外创建一个按钮并将您的 ajax 替换为:

$('#submit-button').click(function() {
    $.post('./includes/ajaxtest3.php', $('#mark-form').serialize(), function(html) {
        document.getElementById('someDiv').write(html);
    }
    });

【讨论】:

  • 谢谢。当我按照您的建议更改回调时,我收到以下警报:“[object Object]”
  • @Ken 尝试在该函数中放入 data 而不是 json
  • @Trevor Arjeski 我已将 json 更改为数据,但仍然收到“[object Object]”。
  • @Ken 嗯...你需要返回一个 json 吗?你不能只返回一些从数组中打印消息的 html 吗?
  • @Trevor Arjeski 不确定我是否需要 json(我对这一切都不熟悉)。但我似乎能够让事情正常工作的唯一方法是填写 PHP 中列出的每个字段。否则,我会收到错误消息。
猜你喜欢
  • 2017-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-10
相关资源
最近更新 更多