2016-03-31 15 views
0

Ajax ile bir php işlevini çağırmayı deneyin. i aslında aramak istediğiniz PHP işlevi belirtmek gerekirse bilmiyorumPHP işlevini kullanarak JavaScript Ajax ile veritabanı değerleri almak için

<script type="text/javascript"> 
    function ajax(){ 
     $.ajax({ 
      type:"POST", 
      url: "SQLCommunication.php", 
      dataType: "JSON", 
      success : function(json){ 
       json = jQuery.parseJSON(json); 
       alert(json.value); 
      } 
     } 
     ) 
    } 

    $("#btn_refresh").click(function(){ 
     ajax(); 
    }); 
</script> 

: my html dosyasında benim JavaScript kodu budur? Bunu nasıl yaptığımı da bilmiyorum.

My PHP fonksiyonu:

header('Content-Type: application/json'); 
function readValue(){ 
    $conn = establishConnection(); 
    if($conn->connect_error){ 
     die("Connection failed: " . $conn->connect_error); 
    } 

    $sql = "SELECT datetime, value FROM tempvalues"; 
    $result = $conn->query($sql); 

    if($result->num_rows > 0){ 
     $row = $result->fetch_assoc(); 
     $arr["datetime"] = $row["datetime"]; //return datetime and value as array 
     $arr["value"] = $row["value"]; 
     if(is_ajax()){ 
      return json_encode($arr); 
     } else { 
      return $arr; 
     } 
    } 

    $conn->close(); 
} 

Yani sorun i düğmesine basarsanız Hiçbir şeyin olmaması, şimdi. Eğer ajax yanıtta sonucunu görmek istiyorsanız

+1

try print_r (json_encode ($ arr)) ' – Lukabot

+0

PHP kodunuzdaki' readValue() 'işlevini çağırmanız ve sonucunu 'echo' etmeniz gerekir. –

+0

Ve – Lukabot

cevap

1

benim stiline yeniden edeceğiz

jQuery

<script type="text/javascript"> 
    $("#btn_refresh").click(function(){ 
     $.ajax({ 
      type:"POST", 
      url: "SQLCommunication.php", 
      dataType: "JSON", 
      success : function(data){ 
       console.log(data); 
       if(data.status === "success"){ 
        alert("success"); 
       }else{ 
        alert("error"); 
       } 
      } 
      error : function(XHR, status){ 
       alert("fatal error"); 
      } 
     }) 
    }); 
</script> 

PHP

header('Content-Type: application/json'); 
function readValue(){ 
    $conn = establishConnection(); 
    if($conn->connect_error){ 
     die("Connection failed: " . $conn->connect_error); 
    } 

    $sql = "SELECT datetime, value FROM tempvalues"; 
    $result = $conn->query($sql); 

    if($result->num_rows > 0){ 
     $row = $result->fetch_assoc(); 
     $arr["datetime"] = $row["datetime"]; //return datetime and value as array 
     $arr["value"] = $row["value"]; 
     $arr["status"] = "success"; 
    }else{ 
     $arr["status"] = "error"; 
    } 

    return json_encode($arr); 
    $conn->close(); 
} 

echo readValue(); 

Güncelleme


Untested

functions.php'ın

function readValue(){ 
    $conn = establishConnection(); 
    if($conn->connect_error){ 
     die("Connection failed: " . $conn->connect_error); 
    } 

    $sql = "SELECT datetime, value FROM tempvalues"; 
    $result = $conn->query($sql); 

    if($result->num_rows > 0){ 
     $row = $result->fetch_assoc(); 
     $arr["datetime"] = $row["datetime"]; //return datetime and value as array 
     $arr["value"] = $row["value"]; 
     $arr["status"] = "success"; 
    }else{ 
     $arr["status"] = "error"; 
    } 

    return json_encode($arr); 
    $conn->close(); 
} 

function writeValue(){ 
    ... 
} 

SQLCommunication.php

header('Content-Type: application/json'); 
if(!isset($_GET['func']) && empty($_GET['func'])){ 
    //make the file inaccessible without $_GET 
    $arr['status'] = "error"; 
    echo json_encode($arr); 
    exit(); 
) 

if($_GET['func'] === "readvalue"){ 
    echo readValue(); 
}elseif($_GET['func'] === "writevalue"){ 
    echo writeValue(); 
}elseif($_GET['func'] === "whatever"){ 
    //whatever... 
} 

    .... 

jQuery

$("#btn_refresh").click(function(){ 
    $.ajax({ 
     type:"POST", 
     url: "SQLCommunication.php?func=readvalue", //SQLCommunication.php?func=writevalue 
     dataType: "JSON", 
     success : function(data){ 
      console.log(data); 
      if(data.status === "success"){ 
       alert("success"); 
      }else{ 
       alert("error"); 
      } 
     } 
     error : function(XHR, status){ 
      alert("fatal error"); 
     } 
    }) 
}); 
+0

teşekkürler, işe yarıyor. Yani kullanmak istediğim .php dosyasının hangi işlevini gösteremiyorum? Ajax olayı bana sadece php dosyasının yankısını veriyor. Yani, temelde, eğer daha fazla php fonksiyonu aramak istersem, her biri için yeni bir dosya yapmalıyım? – binaryBigInt

+0

@binaryBigInt Bu benim için geniş bir soru. Oradaki kod için mi? 'FunctionsValue()' gibi fonksiyonları 'functions.php' içinde kaydedebilirsiniz, siz isimlendirin. SQLCommunication.php' yoluyla functions.php'ye erişin. Ardından, SQLCommunication.php'de $ _GET yöntemini kullanın. Bunu dinamik hale getirmek için, en azından şu anda aklımda olan şey bu. İstersen cevabımı güncelleyebilirim. – Chay22

+0

Evet, lütfen ne demek istediğinizi kısa bir örnek verin. Bu çok yardımcı olur! – binaryBigInt

1

, siz) yankı (kullanmak zorunda, ya da bunun yerine getiri kontrolörünüze başka baskı yöntemi

+0

"Denetleyici" ile ne demek istiyorsun? – binaryBigInt

+1

İsterseniz komut veya işlev. Denetleyiciler, MVC mimarisinde kod dosyasının adıdır (PHP için Symfony veya Laravel gibi). –

İlgili konular