将回显从php-function返回到ajax

时间:2015-02-12 21:53:55

标签: javascript php jquery ajax json

我有一个问题。从php-function接收数据到ajax。

Ajax(在html文件中):

function showUser(name) {
$.ajax({      
  type: 'POST',                        
  url: '/api.php',                            
  data: { 
    name : "\""+name+"\"",
    func_id : "1" 
  },                        
  dataType: 'json',                       
  success: function(data)           
  {
    if (data == null) { 
      console.log("Something went wrong..");
    } else {
      console.log(data);

Php(单独的php文件):

<?php 
error_reporting(E_ALL);

//MySQL Database connect start  
$host = "localhost";
$user = "root";
$pass = "root";
$databaseName = "TFD";

$con = mysqli_connect($host, $user, $pass);
if (mysqli_connect_errno()) {
  echo "Failed to connect to database: " . mysqli_connect_error();
}
$dbs = mysqli_select_db($con, $databaseName);
//MySQL Database connect end

$func_id = $_POST['func_id'];

function showUser() {
  global $con;
  $name = $_POST['name'];
  $sql = "SELECT * FROM users WHERE first_name=$name";
  $result = mysqli_query($con, $sql);            
  $array = mysqli_fetch_row($result);             
  mysqli_close($con);
  echo json_encode($array);   
}

if ($func_id == "1") {
  showUser();
}
?>

问题:如果我没有php中的showUser-function,那么一切都有效,即如果我在&#34;中有所有php代码,我会收到正确的输出到ajax。根&#34;直接,但是当我把这个部分放在一个函数中时,我没有把任何东西发送到ajax。 Chrome中的网络面板显示来自sql的正确查询,因此$ array包含正确的数据,但我没有在ajax中收到它。 有没有解决这个问题? 谢谢!

1 个答案:

答案 0 :(得分:0)

原因可能是函数内部的变量仅对函数本身可见。试试这个:

$name = $_POST['name'];
function showUser($name) {
    global $con;
    $sql = "SELECT * FROM users WHERE first_name=$name";
    $result = mysqli_query($con, $sql);            
    $array = mysqli_fetch_row($result);             
    mysqli_close($con);
    echo json_encode($array);   
}

注意:如果您使用'mysql_escape_string'来阻止sql注入,请不要忘记先连接到db,否则'mysql_escape_string'将返回空字符串。