.ajaxForm将数据传递给php

时间:2016-03-23 11:18:19

标签: javascript php mysql ajax

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

以下是当前在表单提交过程中显示进度条的JavaScript函数,问题是' post'名称,电话和电子邮件不起作用,但附件上传确实有效。

$(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));

?>

有什么建议吗?

由于

3 个答案:

答案 0 :(得分:1)

将您的SQL查询更改为:

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

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

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

也许您可以将代码添加到他应该从哪里获取信息?

答案 1 :(得分:0)

$ .ajax

中缺少类型参数
$('form').ajaxForm({
    type: 'POST',
    dataType:  'json',
    data : {'name':name,'phone':phone,'email':email},
......................................

答案 2 :(得分:0)

所有,感谢您的帮助,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;
                    }
                },