2017-09-11 180 views
0

在我的项目中,我使用ajax从数据库中获取数据。我测试数据内容,我选择alert(valData)成功函数。但不幸的是,没有从 ajax返回。我测试过如何使用ajax从数据库获取正确的数据

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); 
?> 

这似乎无可厚非我的代码,但我无法从数据库取数据

我不知道这个错误,谁能帮助我?

+0

开放开发控制台,检查错误。 –

+2

请不要在会话中存储您的密码和用户。这是非常不安全的。 – Erik

+1

按下F12 Chrome浏览器 - >网络 - >找到您的请求,并检查所有数据是否正确。 – RaV

回答

0

您从服务器发送回客户端的数据不是您在ajax中指定的期望json数据的有效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被视为对第二个为字符串的整数查询密切关注。请参阅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 
} 
?> 
+0

在我的天,stripslashes让ajax返回任何内容。它不是整数作为字符串,请参阅get_ajax_csc.php代码更新 – stack

+0

你只是不想学习 –

+0

你是什么意思?我已经尝试了很多次,没有stripslashes(),Div内容不能更新到我的数据库。 – stack

相关问题