【问题标题】:Ajax to send all POST form values to php fileAjax 将所有 POST 表单值发送到 php 文件
【发布时间】:2019-09-05 03:50:58
【问题描述】:

我有以下脚本尝试将所有表单数据发送到login_processor.php 文件。

<script>
        $( document ).ready(function() {
            $("#submit").click(function(){
                var name = $("#name").val();
                var email = $("#email").val();
                var FD = new FormData($("#main");
                if(name=="" || email==""){
                    $("#display").html("Please fill all fields");
                }else{
                    $.ajax({
                        type: "POST",
                        url: "login_processor.php",
                        processData: false,
                        contentType: false,
                        data: FD,
                        success: function(result){
                            $("#display").html(result);
                            
                            $("#display").fadeTo(2000, 500).slideUp(500, function(){
                                $("#display").slideUp(500);
                            });
                        }
                    });
                }
                return false;
                
            });
           });
     </script>

我的表单有很多文本输入、下拉菜单、复选框数组等。如何将所有表单值添加到我的 php 文件中?例如,文本框值、选定的下拉值、选定的复选框值等。使用上面的代码,它不起作用。我不确定我做错了什么。有人可以帮忙吗?

编辑 1 发现问题是由于缺少)。但它仍然没有捕获我的 checkboxarray 值。我的复选框如下。它正在从 mysql 数据库中获取数据并显示为复选框

<?php
   while($oaNamesQueryRow = mysqli_fetch_array($oaNamesQueryExecute)){
    $oaName = $oaNamesQueryRow['oaName'];
    echo '<div class = "checkbox-group" required style="float:left; margin-right: 25px;"><input class="checkBoxes" type="checkbox" name="checkBoxArray[]" value="'.$oaName.'" '; ?> <?php if(in_array($oaName,$_POST['checkBoxArray'])) echo "checked='checked'"; ?> <?php echo '> '.$oaName.'</div>';
   }
 ?>

【问题讨论】:

  • 您在new FormData.. 附近错过了),只需添加new FormData($("#main")); 并检查您的控制台是否有任何错误?
  • 在浏览器的开发工具中,在网络选项卡中,您是否看到正在发送到服务器的数据?如果是这样,那里有checkboxarray吗?如果你在定义后立即 console.log(FD) 呢?
  • 试试var_dump($_POST); 看看它有什么作用。也可以得到类似的值 -> $checkbox= explode("," ,$_POST["checkBoxArray"]);
  • 这是用 PHP 获取它的正确方法。我怀疑问题是您的 javascript 没有发送 Ajax 请求中的值。你知道如何打开和使用浏览器的开发工具吗?如果是这样,请检查正在发送到服务器的数据。如果没有,请查找有关如何使用开发工具的教程。调试起来会快很多。
  • @Anu check this ,还有here 它将帮助您循环遍历存在的值。

标签: php jquery html ajax forms


【解决方案1】:

我希望这对你有帮助。试试这个

 <script>
        $( document ).ready(function() {
            $("#submit").click(function(){
                var name        = $("#name").val();
                var email       = $("#email").val();
                if(name=='' || email==''){
                    $("#display").html(result);
                }else{
                    $.ajax({
                        type    : "POST",
                        url     : "login_processor.php",
                        data    : formData,
                        cache   : false,
                        success : function(result){
                            $("#display").html(result);
                            $("#display").fadeTo(2000, 500).slideUp(500, function(){
                                $("#display").slideUp(500);
                            });
                        }
                    });
                }
            });
        });
    </script>

【讨论】:

  • 是的,您可以通过不同的方式将表单数据发布到 login_processor.php。在 data :{'name':name,'email',email} 中,您可以通过这些方式发布,而不是使用 data : formData.
【解决方案2】:

$("#submit").click(function(){
        event.preventDefault();     
            $.ajax({
                type: "POST",
                dataType: "json",
                contentType: "application/json",
                url: "/login_processor.php",
                data: $('form').serialize(),
                success: function (result) {
                    
                }
            });
    }

之后假设您有 usernamepassword 作为表单字段,

<?php
$username=$_POST['username'];
$password=$_POST['password'];

echo $username."<br>";
echo $password;
?>

【讨论】:

  • 我使用另一种方法使代码正常工作。但只是好奇,您的代码也是如何工作的。让我们说在这之后,我怎样才能在login_processor.php文件中获取表单数据?
  • 假设你有两个输入,分别命名为usernamepassword,你可以把它当作$user = $POST['username'];$pass = $POST['password'];
  • 我就是这样做的。但没有得到任何输出。 contentType: 这是某些文件的某个位置吗?我给出的内容与您发布的 contentType 完全一样。不知道是不是这个问题
  • 删除内容类型然后检查。
  • @Anu 检查这个。我修改了我的解决方案
猜你喜欢
  • 2023-02-11
  • 2017-06-22
  • 1970-01-01
  • 1970-01-01
  • 2016-02-05
  • 1970-01-01
  • 1970-01-01
  • 2016-02-19
  • 2013-01-03
相关资源
最近更新 更多