值没有从JS转移到php

时间:2013-11-02 04:44:37

标签: javascript php ajax

我有一个JS脚本:

function addTasteingNote(userID,beerID)
    {
        //get values
        var note = $('#note1').val();


        var ajaxSettings = {
        type: "POST",
        url: "a.php",
        data: "u="+userID+"&b="+beerID+"&n="+note,
        success: function(data){


     } ,
        error: function(xhr, status, error) { alert("error: " + error); }

    };          

        $.ajax(ajaxSettings);

        return false;
    }

和要添加到db的php脚本是:

 <?php
    error_log("starting code"); 
    require_once('connect.inc.php');

            $u = $_GET['uID'];
            $b = $_GET['bID'];
            $n = $_GET['n'];

            //do some checks etc

            $db = new myConnectDB();
            error_log("Successfully created DB");   

            $query3 = "INSERT INTO x (userID,beerID,note) VALUES ($u, '$b', '$n')";

            error_log($query3);

            $result = $db->query($query3);
?>

问题是错误日志显示没有任何内容放入查询中:

[01-Nov-2013 23:40:29] Successfully created DB
[01-Nov-2013 23:40:29] INSERT INTO x (userID,beerID,note) VALUES (, '', '')

我已经在ajax调用的成功中发出警报,所以我知道值正在传递...

2 个答案:

答案 0 :(得分:1)

您需要提供类似

的数据
var ajaxSettings = {
    type: "POST",
    url: "a.php",
    data: {u:userID,b:beerID,n:note},
    success: function(data){


 }

data不会和查询字符串一起,因为你通过ajax发布值,你需要通过POST来获取它们,如

$u = $_POST['u'];
$b = $_POST['b'];
$n = $_POST['n'];

您的查询应该像

$query3 = "INSERT INTO x (userID,beerID,note) VALUES ('".$u."', '".$b."', '".$n."')";

最好将转义字符串POST变量一起使用,以防止SQL注入。

答案 1 :(得分:0)

您正在使用post方法,因此您需要使用$_POST$_REQUEST代替$_GET

来获取数据
$u = $_REQUEST['u'];
$b = $_REQUEST['b'];
$n = $_REQUEST['n'];