2016-11-20 4 views
1

Ich habe alle Themen zu meiner Frage gelesen, kann aber mein Problem nicht lösen. Ich möchte PHP-Funktion Ergebnis mit jQuery AJAX erhalten.Rufen Sie PHP-Funktion mit 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 ist id für select-Tag. Mein Code für get_db.inc.php ist:

<?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'; 
 
} 
 
?>

Wie kann ich Testname Funktion von Ajax-Code aufrufen? Vielen Dank!

+0

Ich sah diesen Beitrag und viele andere. Ich laufe seit 4 Tagen im Kreis, versuche dieses Problem zu lösen und habe es nicht geschafft. – ster

Antwort

0

Sie tun fast richtig, aber nur einen Fehler vergessen Sie, die Funktion aufzurufen. Was Sie tun, ist nur die Daten an diese Datei senden.

Also, um dies zu beheben. Fügen Sie einfach test_name() zu Ihrem 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() 
?> 

Auch wird es besser sein isset außerhalb der Funktion zu überprüfen.

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']) 
} 

Dies wird Ihre Funktion rein zu sein. Es wird später leichter zu debuggen und es wird nicht aufgerufen, wenn Sie $_POST['name'] nicht haben.

+0

In meiner Datei get_db.inc.php werden mehr Funktionen und ich möchte den Ajax-Code angeben, um die Funktion, die ich bevorzuge aufrufen. – ster

+0

Sie können versuchen, Ihre Daten in Ajax eine einfache var wie "action: value" und in Ihrem PHP machen Sie Ihren Test auf diese $ _POST ['Aktion] –

Verwandte Themen