在jQuery中调用php函数

时间:2015-08-24 03:50:18

标签: javascript php jquery

用户需要输入4个输入字段才能获得费用结果。结果将使用FV公式,因此我在线搜索并找出了如何在PHP中使用FV公式。现在我想使用jQuery调用FV公式的功能,因为当用户输入所有字段时,结果将自动出现在id rExpenses中,但它不起作用。当我去localhost时它显示一个空白页面。有人可以帮忙吗?谢谢!

编辑:我删除了php部分并将代码更改为:

<!doctype html>
<html>
<script>
$(document).ready(function() {
$('input').keyup(function(){
var $rincome = parseInt($('#textfield1').val());
var $rate = parseInt($('#textfield2').val());
var $age = parseInt($('#textfield3').val());
var $rage = parseInt($('#textfield4').val());
var rExpenses = FV($rate/100,$rage - $age ,0,$rincome,0);
$('#rExpenses').html((rExpenses).toFixed(2));
});
});
</script>
<b>Monthly retirement income (SGD):</b>
<input type="number" id="textfield1" value="<?php echo $_POST['rincome'];?>"         name="rincome" min = "0"  />
</p>

<p>
<b>Inflation rate (%):
<input type="number" id="textfield2" value="<?php echo $_POST['rate'];?>"     name="rate" min = "0" step = "0.1"/> 
</p>

<p>
<b>Current age:
<input type="number" id="textfield3" value="<?php echo $_POST['age'];?>"             name="age" min = "0" max = "70"/>
</p>

<p>
<b>Retirement age:
<input type="number" id="textfield4" value="<?php echo $_POST['rage'];?>"     name="rage" min = "0"/>
</p>

<p>
<b>The monthly expenses when you retire(inflation adjusted):<span id =     "rExpenses">$0.00</span>
</p>

<script>
function FV(rate, nper, pmt, pv, type) {
var pow = Math.pow(1 + rate, nper),
 fv;
if (rate) {
fv = (pmt*(1+rate*type)*(1-pow)/rate)-pv*pow;
} else {
fv = -1 * (pv + pmt * nper);
}
return fv.toFixed(2);
}
</script>
</html>

2 个答案:

答案 0 :(得分:1)

您无法在JQuery中调用PHP函数,因为JQuery正在浏览器中运行,并且PHP正在服务器上运行。您可以使用AJAX调用将其作为远程类型的东西,但这很愚蠢。为什么不将PHP函数转换为Javascript,并将其放在页面上?

查看该页面,我可以看到您已完成的工作,看起来您似乎想让服务器进行计算。如果你想这样做,你可能需要创建一个表单并将你的值发布到服务器,或者,如上所述,用AJAX做一些事情。

如果是我,我会摆脱PHP的东西,并且有类似的东西(是的,你可以在Javascript中使用变量名中的$符号,但我建议不要这样做如果您要将PHP与它混合起来):

$('input').keyup(function(){
    var $rincome = parseInt($('#textfield1').val());
    var $rate = parseInt($('#textfield2').val());
    var $age = parseInt($('#textfield3').val());
    var $rage = parseInt($('#textfield4').val());
    var rExpenses = fv($rate/100,$rage - $age ,0,$rincome);
    $('#rExpenses').html((rExpenses).toFixed(2));
});

然后更改你的&lt;?php和?&gt;页面末尾的标签转换为&lt; script&gt;和&lt; / script&gt;标签。它不会完全正常工作,但您应该能够在浏览器工具中轻松地进行调试。

答案 1 :(得分:0)

我认为你在这里混淆了两个概念。 PHP在服务器上运行,这意味着当你调用那个php函数时,结果是一个没有任何php代码的html文件。所以你不能直接在jquery中调用php函数,它在生成的HTML文件上运行。

我认为将php函数转换为javscript函数是可以直接调用的,这是你现在拥有的最佳选择。

翻译的javascript函数非常简单:

function fv(r,n,p,pv=0)
{
    var sum = pv;
    for (var i=0;i<n;i++ )
    { 
        sum += sum*r + p;
    }
    return sum;
}

然后您的jquery脚本块变为

$(document).ready(function() {
$('input').keyup(function(){
    var rExpenses = fv(("#textfield2").val()/100, ("#textfield4").val() - ("#textfield3").val(), 0, ("#textfield1").val());
    $('#rExpenses').html((rExpenses).toFixed(2));
});
});