【问题标题】:Call PHP Function using AJAX [duplicate]使用 AJAX 调用 PHP 函数 [重复]
【发布时间】:2016-11-20 14:29:34
【问题描述】:

我已阅读有关我的问题的所有主题,但无法解决我的问题。我想使用 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 是选择标签的 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 函数? 非常感谢!

【问题讨论】:

  • 我看到了那个帖子和许多其他帖子。我在圈子里跑了 4 天试图解决这个问题,但我没有成功。

标签: javascript php jquery ajax


【解决方案1】:

您几乎是正确的,但只有一个错误是您忘记调用该函数。您所做的只是将数据发送到此文件。

所以,要解决这个问题。只需将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']就不会调用。

【讨论】:

  • 在我的 get_db.inc.php 文件中会有更多函数,我想指示 ajax 代码调用我喜欢的函数。
  • 您可以尝试在 ajax 中放入一个简单的变量,例如“action: value”,然后在您的 php 中对此 $_POST['action] 进行测试
猜你喜欢
  • 2012-09-30
  • 1970-01-01
  • 1970-01-01
  • 2012-08-19
  • 2011-05-08
  • 2011-01-17
相关资源
最近更新 更多