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有问题?

请帮我

4

3 回答 3

0

如果您尝试在 AJAX 调用中读取 JSON,则需要使用实际输出 JSON

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

然后,您需要$cacar->tampilHasil()从输出中删除 ,因为这不是有效的 JSON。

于 2012-12-11T00:53:25.340 回答
0

首先,您没有看到数据的原因(这是我认为您想说的)是您试图将尚未提交的 $_POST 数据传递给类的构造函数。除非用户提交这些 $_POST 数组变量,否则它们不会出现,并且看起来您当前已经混入了在构造函数之后调用的 inputUser() 方法中的 HTML 表单(自然)。

此外,这不是好的 OOP。您似乎在网上阅读了一下,然后开始打字。您需要将您尝试处理数据的类逻辑与显示逻辑(即 HTML 和 HTML 生成)分开。从查看一些 PHP 框架或只是一般的 OOP 指南开始。

于 2012-12-11T01:07:56.937 回答
0
echo json_decode($cacar->dataJson());

那不应该是 json_encode:

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

如果我正确阅读了您的示例,那就应该是这样。虽然我不知道这是做什么的:

$cacar->tampilHasil();

编辑:

哦……我现在明白了。摆脱$cacar->tampilHasil();您的响应方法。因为它所做的只是输出一些空的div。这会弄乱你的 json 结果。

......等等......你在呼应一个表格$cacar->inputUser();?你在这里有很多清理工作要做。这件事一团糟。

基本思想是,您期望结果是 json 数据,并且您正在为各种混合的 html 提供服务。您的结果方法应该只返回一个数组 json 编码。仅此而已,否则它将失败。

于 2012-12-11T00:50:57.477 回答