【问题标题】:.ajaxForm passing data to php.ajaxForm 将数据传递给 php
【发布时间】:2016-03-23 11:18:18
【问题描述】:

我正在努力使用 ajaxForm 将数据传递给我的 PHP 文件,以便我可以插入 MySQL 数据库。

以下是目前在表单提交过程中显示进度条的 JavaScript 函数,问题是姓名、电话和电子邮件的“帖子”不起作用,但附件上传可以。

$(function() {
    var name = document.getElementById("name").value;
    var phone = document.getElementById("phone").value;
    var email = document.getElementById("email").value;

    var percent = $('.percent');
    var bar = $('.bar');

    $('form').ajaxForm({
        dataType:  'json',
        data : {
                name:name,
                phone:phone,
                email:email
                },

        beforeSend: function() {
            document.getElementById("bar").style.backgroundColor="rgb(51,166,212)";
            bar.width('0%');
            percent.html('0%');
        },

        uploadProgress: function(event, position, total, percentComplete) {
            var pVel = percentComplete + '%';
            bar.width(pVel);
            percent.html(pVel);
        },

        complete: function(data) {
            document.getElementById("bar").style.backgroundColor="rgb(185,221,111)";
            percent.html("Done!");
            setTimeout(function(){
                modal.style.display = 'none';
                location.reload(); 
            }, 2000);

        }

    });

});

这是 PHP 文件中要传递值的代码。

<?php
include("sql_connection.php");

  $name = $_POST['name'];
  $phone = $_POST['phone'];
   $email = $_POST['email'];

$sql = "INSERT INTO helpdesk (Name, Phone, Email) VALUES ($name, $phone, $email)";
mysqli_query( $conn, $sql);

$dir = 'uploads/';
$count = 0;

if ($_SERVER['REQUEST_METHOD'] == 'POST' and isset($_FILES['files']))
{

foreach ( $_FILES['files']['name'] as $i => $name )
{

    if ( !is_uploaded_file($_FILES['files']['tmp_name'][$i]) )
        continue;

    if( move_uploaded_file($_FILES["files"]["tmp_name"][$i], $dir . $name) )
        $count++;
}
}

  echo json_encode(array('count' => $count));

?>

有什么建议吗?

谢谢

【问题讨论】:

  • 插入查询中的值必须用引号括起来它应该是$sql = "INSERT INTO helpdesk (Name, Phone, Email) VALUES ('".$name."', '".$phone."', '".$email."')";
  • 谢谢,这么简单的答案。它现在将行插入到我的表中,但所有值都是空白的。知道为什么吗?
  • 只需在你的ajax中添加type: "POST",
  • 如果我改变 var name = document.getElementById("name").value;到 var name = "test";.我想知道这是否是因为变量已经设置为 onload?

标签: javascript php mysql ajax


【解决方案1】:

将您的 SQL 查询更改为:

$sql = "INSERT INTO helpdesk (Name, Phone, Email) VALUES ('".$name."', '".$phone."', '".$email."')";

否则,您需要在开始数据库连接的顶部更改包含。

正如我在您的评论中看到的,问题是输入可能不包含任何值。您何时启动 Ajax 请求?提交后或页面加载后?

也许你可以添加他应该从中获取信息的代码?

【讨论】:

    【解决方案2】:

    $.ajax 中缺少类型参数

    $('form').ajaxForm({
        type: 'POST',
        dataType:  'json',
        data : {'name':name,'phone':phone,'email':email},
    ......................................
    

    【讨论】:

      【解决方案3】:

      所有,感谢您的帮助,SQL 查询实际上是错误的,但我还需要为每个变量使用一个函数,以便在发布之前返回其当前状态。

      谢谢

          $('form').ajaxForm({
              type: 'POST',
              dataType:  'json',
              data : {
                      name:function () {
                              return name = document.getElementById("name").value;
                          },
                      phone:function () {
                              return phone = document.getElementById("phone").value;
                          },
                      email:function () {
                              return email = document.getElementById("email").value;
                          }
                      },
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-10-20
        • 1970-01-01
        • 1970-01-01
        • 2015-08-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多