如何使用Jquery和Ajax将Json数据发送到数据库?

时间:2015-01-17 08:59:26

标签: javascript php jquery ajax json

当我点击按钮时,我已经制作了客户详细信息表单,它将Json数据发送给客户。但是我的代码没有将数据插入数据库。我是网络技术的新手,请告诉我我错在哪里。

我的剧本:

 <script>   
    $(document).ready(function(){              
            $("#btnBooking").on("click", function(){                   

                var uName = document.getElementById('userName').value;        
                var mailId = document.getElementById('addressemailId').value;           
                var mobNum = document.getElementById('userContactNumber').value;                    
                $.ajax({
                    url:"http://192.168.1.11/customerhomes/customer.php", 
                    type:"GET", 
                    dataType:"json", 
                    data:{type:"booking",Name:uName, Email:mailId, Mob_Num:mobNum}, 
                    //type: should be same in server code, otherwise code will not run
                    ContentType:"application/json", 
                    success: function(response){ 
                            alert("13");                                                 
                        }, 
                        error: function(err){ 
                        alert(JSON.stringify(err)); 
                    } 
                })              
            }); 
    });
</script>

表单在html中

<body>
    <div class="page-header text-center">
        <form >
            <div class="col-lg-8">                                  
                <div class="form-group">
                        <label class="col-lg-3 control-label">Name:<font style="color: red;">*</font></label>
                        <div class="col-lg-9">
                            <input type="text" class="form-control" id="userName" name="userName" placeholder="Full Name" value="">
                        </div>
                </div>


                <div class="form-group">
                    <label class="col-lg-3 control-label">Mobile:<font style="color: red;">*</font></label>
                    <div class="col-lg-9">
                        <input type="text" class="form-control" id="userContactNumber" name="userContactNumber" type="number" placeholder="" onkeypress="enableKeys(event);" maxlength="10" placeholder="9966778888">
                    </div>
                </div>

                <div class="form-group">
                        <label class="col-lg-3 control-label">Email:<font style="color: red;">*</font></label>
                        <div class="col-lg-9">                                  
                            <input type="text" class="form-control" name="addressemailId" id="addressemailId" placeholder="you@example.com" value="">
                        </div>
                </div>  
                <div class="form-group marg-bot-45">
                    <label class="col-lg-3 control-label"></label>
                    <div class="col-lg-9">

                        <a href="" class="btn btn-info"  id="btnBooking">Confirm Booking</a>
                    </div>
                </div>
            </div>
        </form>
    </div>
</body>

服务器代码

<?php
header('Access-Control-Allow-Origin: *');//Should work in Cross Domaim ajax Calling request
mysql_connect("localhost","root","1234");
mysql_select_db("customer_details");
if(isset($_GET['type']))
{
    if($_GET['type']=="booking"){
        $name = $_GET ['Name'];
        $mail = $_GET ['Email'];
        $mobile = $_GET ['Mob_Num'];
        $query1 = "insert into customer(cust_name, cust_mobile, cust_email) values('$name','$mail','$mobile')";
        $result1=mysql_query($query1);
    }
}
else{
    echo "Invalid format";
}

3 个答案:

答案 0 :(得分:1)

使用此

JavaScript代码:

<script>
        $(document).ready(function(){
            $("#btnBooking").on("click", function(e){

                // as you have used hyperlink(a tag), this prevent to redirect to another/same page
                e.preventDefault();

                // get values from textboxs  
                var uName = $('#userName').val();
                var mailId = $('#addressemailId').val();
                var mobNum = $('#userContactNumber').val();

                $.ajax({
                    url:"http://192.168.1.11/customerhomes/customer.php",
                    type:"GET",
                    dataType:"json",
                    data:{type:"booking",Name:uName, Email:mailId, Mob_Num:mobNum},
                    //type: should be same in server code, otherwise code will not run
                    ContentType:"application/json",
                    success: function(response){
                        alert(JSON.stringify(response));
                    },
                    error: function(err){
                        alert(JSON.stringify(err));
                    }
                })
            });
        });
    </script>

PHP代码

<?php
header('Access-Control-Allow-Origin: *');//Should work in Cross Domaim ajax Calling request
 mysql_connect("localhost","root","1234");
 mysql_select_db("customer_details");
if(isset($_GET['type']))
{
    $res = [];

    if($_GET['type'] =="booking"){
        $name  = $_GET ['Name'];
        $mail  = $_GET ['Email'];
        $mobile  = $_GET ['Mob_Num'];
        $query1  = "insert into customer(cust_name, cust_mobile, cust_email) values('$name','$mail','$mobile')";
        $result1 = mysql_query($query1);

        if($result1)
        {
            $res["flag"] = true;
            $res["message"] = "Data Inserted Successfully";
        }
        else
        {
            $res["flag"] = false;
            $res["message"] = "Oppes Errors";
        }

    }
}
else{
    $res["flag"] = false;
    $res["message"] = "Invalid format";
}

    echo json_encode($res);
?>

如果成功插入数据,则返回带有消息的true标志,否则返回带有消息的错误标志

答案 1 :(得分:0)

我首先要在服务器上的ajax调用和接收PHP页面上将“GET”更改为“POST”。

其次,我通过使用echo在PHP端输出每个值来检查值是否实际传递到PHP页面。这样你就会知道至少价值正在经历。

JavaScript的:

var uName = $('#userName').val();        
var mailId = $('#addressemailId').val();           
var mobNum = $('userContactNumber').val();                    
$.ajax({
    url:"http://192.168.1.11/service4homes/customer.php", 
    type:"POST", 
    data:{type:"booking",Name:uName, Email:mailId, Mob_Num:mobNum}, 
    complete: function(response){ 
        var test = $.parseHTML(response);
        alert(test);
    }
 });

PHP代码:

echo $_POST["type"];
echo $_POST["Name"];
//etc...

答案 2 :(得分:0)

试试这可能对你有所帮助。

你的ajax函数中的

第一次改变: ContentType:“application / json”到 contentType:“application / json; charset = utf-8”

第二

in data:{type:“booking”,Name:uName,Email:mailId,Mob_Num:mobNum}更改为数据:{ type1:“booking”,名称:uName,电子邮件:mailId ,Mob_Num:mobNum}。看到你在ajax函数中将类型设置为GET,所以我认为“type”是保留字,所以它可能不起作用。并检查你的网址发送ajax请求,如果它是正确的bcoz你正在使用IP地址。

在你的服务器代码我看到错字。

之间有空间

$ _ GET ['name'],$ _GET ['Email'],$ _GET ['Mob_Num']。

应该没有空格,所以将其改为此,

<强> $ _ GET [ '名称']

<强> $ _ GET [ '电子邮件']

<强> $ _ GET [ 'Mob_Num']