【问题标题】:POST not grabbing all form variablesPOST 未获取所有表单变量
【发布时间】:2017-11-02 20:11:03
【问题描述】:

试图弄清楚为什么我的代码没有发送所有 POST 数据。该代码在主页上用于获取存储在数据库中的请求信息,并在单独的页面上用于将我所做的状态更新发布到数据库。基本相同,除了变量名。

注意:我在这里搜索了很多。我使用 var_dump 仅显示数组中的“内容”数据。我对 js 并不完全满意,但可以遵循其中的一些。因此,下面的代码是我在尝试扩展到另一个页面之前在一个页面上编辑和测试的模板。这就是问题所在。我不确定为什么它适用于一个而不是另一个。如果这被认为与任何内容重复,我们深表歉意,但我在类似的帖子中没有找到一个很好的答案来解释原因。 admin.php:

<form action="insert.php" method="post" enctype="multipart/form-data">
   <div class="share">
      <div class="arrow"></div>
      <div class="panel panel-default">

         <div class="panel-body">
            <div class="">
               <img src="../logo.png" style="height:60px; width:60px; float:left; margin-right:3px;" />
               <textarea name="content1" id="content1" cols="40" rows="10"  class="form-control message" style="height: 60px; width:450px; overflow: hidden;"></textarea> 
            </div>
         </div>

         <div class="panel-footer">
            <div class="row">
               <div class="col-md-7">
                  <div class="form-group">
                     <div class="btn-group">
                        <select name="avatar" id="avatar" class="form-control-issue-avatar"> <----whats not sending
                           <option value="0" selected="selected">Author</option>
                           <option value="per1">P</option>
                           <option value="per2">W</option>
                        </select> 
                     </div>
                  </div>
               </div>
               <div class="col-md-5">
                  <input type="submit" value="Post" class="post_button">                               
               </div>
            </div>
         </div>
      </div>

</form>

这里是insert.php:

if(isSet($_POST['content1'], $_POST['avatar']))

{
 $content1=$_POST['content1'];
 $avatar=$_POST['avatar']; // <--- comes back NULL
$sql_in= mysqli_query($con,"SELECT comment,comment_id,status_time FROM comments order by comment_id desc");
$r=mysqli_fetch_array($sql_in);
}

最后是调用它的 post.js:

 $(function() {

$(".post_button").click(function() {

 var element = $(this);

 var test = $("#content1").val();

 var dataString = 'content1='+ test;

 if(test=='')
 {
 alert("Please Enter Some Text");

}
else
{
$("#flash").show();
$("#flash").fadeIn(400).html('<span class="loading">Loading Comment...</span>');


    $.ajax({
    type: "POST",
url: "insert.php",
 data: dataString,
cache: false,
success: function(html){



$("#display").after(html);

document.getElementById('content1').value='';
$("#flash").hide();

}


});
}


return false;
});

});

var_dump 等:

Array ( [content1] => sass )
C:\wamp64\www\post\insert.php:32:
 array (size=1)
'content1' => string 'sass' (length=4)

【问题讨论】:

  • 我很困惑,如果您的 JS 中没有获取头像的值,也没有在数据中发送它,或者我错过了什么?
  • 您只发送一个变量。你为什么不直接序列化表单呢
  • 这就是我想要弄清楚的。该js与第一页中使用的功能相同。第一页没有问题抓取所有部分(IE 电子邮件、用户名、问题的文本输入)..我不知道。我尝试编辑使用 querySelectorAll 没有修复 @BarryWalsh

标签: javascript php html post mysqli


【解决方案1】:

给表单添加id属性,然后在表单上使用serialize()获取表单中的所有数据通过ajax传递给php

<form id='formid'>


$.ajax({
data: $('#formid').serialize(),
//other Ajax stuff 

});

【讨论】:

  • 通过将该行“添加”到现有行中进行了建议的编辑,但没有发现差异。我也许用错了? var dump 仍然只显示: C:\wamp64\www\post\insert.php:32: array (size=1) 'content1' => string 'testttt' (length=7)
  • 序列化应该得到你所有的表单内容。你像我说的那样在 form 和 serialize() 中添加了 id?
  • 你有两次数据键。删除数据:dataString
  • 快乐的朋友:)
猜你喜欢
  • 2012-01-02
  • 1970-01-01
  • 2010-10-31
  • 2015-12-16
  • 1970-01-01
  • 2012-01-01
  • 1970-01-01
  • 2023-03-06
  • 2014-04-14
相关资源
最近更新 更多