如何使用ajax从数据库中获取正确的数据

时间:2017-09-11 08:34:21

标签: javascript php mysql ajax

在我的项目中,我使用ajax从DB中获取数据。我测试数据内容,我选择alert(valData)成功函数。但不幸的是,没有任何回报 阿贾克斯。我测试了

select contact from IDC WHERE id=5;

它在mysql cmd行中运行良好。

这是我的js代码:

var stNum = 5;
$.ajax({
        dataType:'json',
        type:"POST",
        url:"get_ajax_csc.php",
        data:{stNum:stNum},
        success:function(data) 
        {
         var valData = data;
         alert(valData);
        }
      });

这是get_ajax_csc.php代码:

<?php
if(isset($_POST['stNum']))
{   
 include("DB.php"); 
 $q=$_POST["stNum"];
 $sql="select contact from IDC WHERE id='".$q."';";
 $sel = $conn->query($sql); 

 $arr = $sel->fetch(PDO::FETCH_ASSOC);
 echo $arr['contact'];
 }

if(isset($_POST['htmlCnt']))
{   
include("DB.php");
$htcnt=stripslashes(".$_POST['htmlCnt'].");
........ 
}
 ?>

这是DB.php代码:

<?php
session_start();
$pwd=$_SESSION['password'];
$user=$_SESSION['user'];

try 
{
  $conn = new PDO('mysql:host=x.x.x.x;port=3306;dbname=hpc',$user,$pwd);
}
catch (PDOException $e)
{
  echo "account or pwd wrong <meta http-equiv='refresh' content='1;url=index.html'>";
    exit;
}  
$conn->setAttribute(PDO::ATTR_ORACLE_NULLS, true);
?>

我的代码似乎没有错,但我无法从DB中获取数据

我不知道错误,谁可以帮助我?

1 个答案:

答案 0 :(得分:0)

您从服务器发送回客户端的数据不是有效的json数据,因为您在ajax中指定了您期望的json数据。

您的查询也不一样:

SELECT contact from IDC WHERE id=5; // This is the correct query you run on the cmd line.



$sql="select contact from IDC WHERE id='".$q."';"; // This is the one from your php

如果你仔细查看查询,第一个id被视为第二个id的整数作为字符串。见When to use single quotes, double quotes, and backticks in MySQL

此外,您正在使用PDO,因此请充分利用预准备语句。 请尝试以下代码:

<?php
if (isset($_POST['stNum'])) {
    include("DB.php");

    $q   = $_POST["stNum"];
    $sql = "select contact from IDC WHERE id= ? ";

    $sel = $conn->prepare($sql);
    $sel->bindParam(1, $q, PDO::PARAM_INT);
    $sel->execute();
    $arr = $sel->fetchColumn(PDO::FETCH_ASSOC);
    echo json_encode($arr['contact']); //send back json data to the client
}
?>