使用AJAX调用PHP函数

时间:2016-11-20 14:29:35

标签: javascript php jquery ajax

我已经阅读了有关我的问题的所有主题,但无法解决我的问题。我想用jQuery AJAX获取php函数结果。

function fetch_select(){
  val_name = $('#name').val();
  $.ajax({
    type: 'POST',
	url: 'include/get_db.inc.php',
	data: {
           name: val_name,
	},
	success: function (response) {
	  document.getElementById('higtchart_medie_gen').innerHTML=response;
	  columnChart( JSON.parse(response));
    }
  });
}

function columnChart(data_v){
  if(data_v.length >0){
    $(function () {
	  $('#higtchart_medie_gen').highcharts({
	    chart: {
		  type: 'column'
		 },
......
#name是select标记的ID。 我的get_db.inc.php代码是:

<?php
function test_name () {
  $ret = [];
  if(isset($_POST['name'])){
    $name = $_POST['name'];
    $sql = "SELECT 
            ......
            WHERE ID = $name ";
    $result = $conn->query($sql);
    if($result->num_rows > 0){
      while($row = $result->fetch_assoc()) {
        $ret [] = [$row['NAME'] . ' ' . $row['LASTN'], floatval($row['AVGG'])];
      }
    }
  }
  if(count($ret) >1) echo json_encode($ret);
  else echo 'Not working';
}
?>

如何从Ajax代码中调用 test_name 函数? 非常感谢你!

1 个答案:

答案 0 :(得分:0)

你几乎是正确的但是只有一个错误就是你忘了调用这个功能。你所做的只是将数据发送到这个文件。

所以,要解决这个问题。只需将test_name()添加到get_db.inc.php

即可
 <?php
      function test_name () {
           $ret = [];
           if(isset($_POST['name'])){
                $name = $_POST['name'];
                $sql = "SELECT 
                 ......
                WHERE ID = $name ";
                $result = $conn->query($sql);
                if($result->num_rows > 0){
                     while($row = $result->fetch_assoc()) {
                          $ret [] = [$row['NAME'] . ' ' . $row['LASTN'],floatval($row['AVGG'])];
                     }
                }
           }
          if(count($ret) >1) echo json_encode($ret);
          else echo 'Not working';
     }

     test_name()
 ?>

最好在功能外检查isset。

function test_name ($name) {
     $ret = [];
     $sql = "SELECT 
     ......
     WHERE ID = $name ";
     $result = $conn->query($sql);
     if($result->num_rows > 0){
           while($row = $result->fetch_assoc()) {
                $ret [] = [$row['NAME'] . ' ' . $row['LASTN'],floatval($row['AVGG'])];
           }
     }
     if(count($ret) >1) echo json_encode($ret);
     else echo 'Not working';
}

if(isset($_POST['name'])){
    test_name($_POST['name'])
}

这将使您的功能变得纯净。稍后调试会更容易,如果没有$_POST['name'],则不会调用。