我有这样的编码,编码是一个包含函数的类
<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有什么问题吗?
请帮帮我
答案 0 :(得分:0)
echo json_decode($cacar->dataJson());
不应该是json_encode:
echo json_encode($cacar->dataJson());
如果我正确地阅读你的例子应该是它。虽然我不知道这是做什么的:
$cacar->tampilHasil();
编辑:
噢......我现在明白了。在您的回复方法中删除$cacar->tampilHasil();
。因为它所做的只是输出一些空div。这会弄乱你的json结果。
...等等......你在$cacar->inputUser();
回复一个表格?你有很多清理工作要做。这件事情很乱。
基本的想法是,你期待json数据作为结果,并且你正在提供与它混合的各种html。你的结果方法应该只返回一个json编码的数组。没有更多或它会失败。
答案 1 :(得分:0)
如果您正在尝试在AJAX调用中阅读JSON,则需要使用
实际输出JSONecho json_encode($cacar->dataJson());
然后,您需要从输出中删除$cacar->tampilHasil()
,因为它不是有效的JSON。
答案 2 :(得分:0)
首先,您没有看到数据(我认为您想说的是)的原因是您正在尝试将尚未提交的$ _POST数据传递给Class的构造函数。除非用户提交它们,否则这些$ _POST数组变量将不会出现,并且看起来你有一个HTML表单,你当前混淆了你的inputUser()方法,该方法在构造函数之后调用(自然地)。
此外,这不是一个好的OOP。你似乎有一个在线阅读,然后开始打字。您需要将您尝试做的事情的类逻辑与来自显示逻辑的数据(即HTML和HTML生成)分开。首先看一些PHP框架或只是一般的OOP指导。