2012-12-11 96 views
0

我有一個這樣的編碼,編碼是包含功能顯示數據

<html lang="en"> 
<head> 
    <title>Ketidakpastian: Teorema Bayes</title> 
    <link href="../bootstrap/css/bootstrap.css" rel="stylesheet"> 
    <link href="../bootstrap/css/jquery.ui.all.css" rel="stylesheet"> 
    <style type="text/css"> 
     body { 
      padding: 10 200 10 200; 
     } 
    </style> 
    <script type="text/javascript" src="../bootstrap/js/jquery-1.8.2.js"></script> 
    <script type="text/javascript" src="../bootstrap/js/bootstrap.js"></script> 
    <script type="text/javascript" src="../bootstrap/js/bootstrap.min.js"></script> 
    <script> 
     $(document).ready(function() { 
      $(".tooltipnya").tooltip({ 
       trigger: 'hover', 
       placement: 'right' 
      }); 
     }); 

     $(function(){ 
      $("#form-hitung").submit(function(){ 
       $.ajax({ 
        url:"teorema-bayes.php", 
        dataType: "json", 
        success: function(data){ 
         cacar = "<ol>"; 
         $.each(data, function(i,n){ 
          cacar = cacar + "<li>"+n["pesan"]+" : "+n["hasil"]+"</li>"; 
         }); 
         cacar = cacar + "</ol>"; 
         $(".result-cacar").append(cacar); 
        } 
       }); 
       return false; 
      }); 
     }); 
    </script> 
</head> 
<body> 
    <?php 

    class TeoremaBayes { 

     private $cacar; 
     private $bintik2Cacar; 
     private $bintik2TidakCacar; 

     public function __construct($cacar, $bintik2Cacar, $bintik2TidakCacar) { 
      $this->cacar = $cacar; 
      $this->bintik2Cacar = $bintik2Cacar; 
      $this->bintik2TidakCacar = $bintik2TidakCacar; 
     } 

     public function setCacar($probCacar) { 
      $this->cacar = $probCacar; 
     } 

     public function getCacar() { 
      return $this->cacar; 
     } 

     public function setBintik2Cacar($probBintik2Cacar) { 
      $this->bintik2Cacar = $probBintik2Cacar; 
     } 

     public function getBintik2Cacar() { 
      return $this->bintik2Cacar; 
     } 

     public function setBintik2TidakCacar($probBintik2TidakCacar) { 
      $this->bintik2TidakCacar = $probBintik2TidakCacar; 
     } 

     public function getBintik2TidakCacar() { 
      return $this->bintik2TidakCacar; 
     } 

     //menghitung probabilitas tidak terkena cacar 
     public function notCacar() { 
      return $notCacar = 1 - $this->getCacar(); 
     } 

     //menghitung prob. bintik2cacar kali prob. cacar 
     public function hitungBintik2Cacar() { 
      return $this->getBintik2Cacar() * $this->getCacar(); 
     } 

     //menghitung prob. bintik2 tidak cacar kali prob. tidak cacar 
     public function hitungBintik2TidakCacar() { 
      return $this->getBintik2TidakCacar() * $this->notCacar(); 
     } 

     //menghitung prob. terkena cacar 
     public function terkenaCacar() { 
      return round($this->hitungBintik2Cacar()/($this->hitungBintik2Cacar() + $this->hitungBintik2TidakCacar()), 2); 
     } 

     //menghitung prob. tidak terkena cacar 
     public function tidakTerkenaCacar() { 
      return round($this->hitungBintik2TidakCacar()/($this->hitungBintik2TidakCacar() + $this->hitungBintik2Cacar()), 2); 
     } 

     public function inputUser() { 
      ?> 
      <h3>Ketidakpastian: Teorema Bayes</h3> 
      <p style="font-size: 16px">Menghitung Probabilitas seseorang terkena penyakit cacar atau tidak</p> 
      <form action="" method="post" id="form-hitung"> 

       <table class="table" style="font-size: 16px;"> 
        <tr> 
         <td>Probabilitas cacar</td> 
         <td><input type="text" name="probCacar" class="tooltipnya" style="height: 30px; width: 50px; text-align: right;" rel="tooltip" title="Masukkan peluang, misal 0.3"/></td> 
        </tr> 
        <tr> 
         <td>Probabilitas munculnya bintik-bintik diwajah maka cacar</td> 
         <td><input type="text" name="probBintik2Cacar" class="tooltipnya" style="height: 30px; width: 50px; text-align: right;" rel="tooltip" title="Masukkan peluang, misal 0.3"/></td> 
        </tr> 
        <tr> 
         <td>Probabilitas munculnya bintik-bintik diwajah maka tidak cacar</td> 
         <td><input type="text" name="probBintik2TidakCacar" class="tooltipnya" style="height: 30px; width: 50px; text-align: right;" rel="tooltip" title="Masukkan peluang, misal 0.3"/></td> 
        </tr> 
        <tr> 
         <td><input class="btn btn-primary" type="submit" value="Submit"/></td> 
         <td></td> 
        </tr> 
       </table> 

      </form> 
      <?php 
     } 

     public function dataJson() { 
      $data1 = array("pesan" => "Probabilitas tidak terkena cacar", "hasil" => $this->notCacar()); 
      $data2 = array("pesan" => "Probabilitas terkena cacar jika ada bintik-bintik merah diwajah", "hasil" => $this->terkenaCacar()); 
      $data3 = array("pesan" => "Probabilitas tidak terkena cacar jika ada bintik-bintik merah diwajah", "hasil" => $this->tidakTerkenaCacar()); 
      $gabungData = array($data1, $data2, $data3); 
     } 

     public function tampilHasil() { 
      ?> 
      <div class="result-cacar"> 

      </div> 
      <?php 
     } 

    } 
    ?> 
</body> 

然後創建一個對象調用從一個類的功能的類已經取得

<?php 

require_once 'teorema-bayes.php'; 
$cacar = new TeoremaBayes($_POST['probCacar'], $_POST['probBintik2Cacar'],   $_POST['probBintik2TidakCacar']); 
$cacar->inputUser(); 
echo json_decode($cacar->dataJson()); 
$cacar->tampilHasil(); 
?> 

但是要調用數據的結果不能,在他的ajax和json中有什麼錯誤嗎?

請幫我

+1

意大利麪條代碼中的OOP?真?也許想想把你的課程放在它自己的文件中幷包含它。然後,也許可以從班上獲得所有的顯示邏輯。 –

回答

0
echo json_decode($cacar->dataJson()); 

難道不應該被json_encode:

echo json_encode($cacar->dataJson()); 

如果我正確地讀你的榜樣,應該是它。雖然我不知道這是什麼做的更多信息:

$cacar->tampilHasil(); 

編輯:

OOOOH ...我現在看到。在您的響應方法中擺脫$cacar->tampilHasil();。因爲它所做的只是輸出一些空的div。這會弄亂你的json結果。

...然後等待...您正在迴應$cacar->inputUser();中的表單嗎?你有很多清理工作要做。這件事很糟糕。

基本的想法是,你期待json數據的結果,你服務的各種html混合在一起。你的結果方法應該只返回一個數組json編碼。沒有更多或它會失敗。

0

如果你想,你只是在你的AJAX調用讀JSON,你需要從實際使用JSON

echo json_encode($cacar->dataJson()); 

然後,您需要從輸出中刪除$cacar->tampilHasil()因爲這不是有效的JSON。

0

首先,你沒有看到數據(這是我認爲你想說的)的原因是你正試圖傳遞尚未提交到類的構造函數的$ _POST數據。除非用戶提交它們,否則這些$ _POST數組變量將不會出現,並且它看起來像是您已經混淆了您的inputUser()方法的HTML表單,該方法在構造函數之後調用(自然地)。

此外,這是不好的OOP。你似乎有一個在線閱讀,然後開始打字。您需要將您試圖執行的類邏輯與來自顯示邏輯的數據分開(即HTML生成HTML &)。首先看看一些PHP框架或者一般的OOP指導。

+0

哦,非常感謝您回覆我的問題:) – ramadani