2016-11-20 5 views
1

Я прочитал все темы о моем вопросе, но не могу решить свою проблему. Я хочу получить результат функции php, используя jQuery AJAX.Вызов функции PHP с использованием AJAX

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

 
function columnChart(data_v){ 
 
    if(data_v.length >0){ 
 
    $(function() { 
 
\t $('#higtchart_medie_gen').highcharts({ 
 
\t  chart: { 
 
\t \t type: 'column' 
 
\t \t }, 
 
......
#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 функцию от Ajax кода? Большое спасибо!

+0

Я видел этот пост и многие другие. Я бегу в круг в течение 4 дней, пытаясь решить эту проблему, и я не добился успеха. – ster

ответ

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'].

+0

В моем файле get_db.inc.php будет больше функций, и я хочу указать на код ajax, чтобы вызвать функцию, которую я предпочитаю. – ster

+0

Вы можете попытаться поместить в свои данные в ajax простую переменную типа «action: value» и в вашем php сделать свой тест на этом $ _POST ['action] –

Смежные вопросы