2015-08-24 5 views
-1

Пользователь должен ввести 4 поля ввода, чтобы получить результат, который является расходами. В результате будет использоваться формула FV, поэтому я искал в Интернете и выяснял, как формула FV может использоваться в PHP. Теперь я хочу вызвать функцию формулы FV, используя jQuery, как я хочу, когда пользователь вошел во все поля, результаты будут автоматически выдаваться в id rExpenses, но это не сработает. Он отображает пустую страницу, когда я иду по локальному хосту. Может ли кто-нибудь помочь? Спасибо!вызов функции php в jQuery

Изменить: Я удалил 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> 
+0

Помещенный одиночные кавычки вокруг PHP переменной 'вар rExpenses =« '; '. Попробуй это. –

+0

Если вы действительно должны использовать PHP, почему бы не использовать AJAX? – Script47

+0

@NorlihazmeyGhazali жаль, что все еще не работает – RAABBIT

ответ

1

Вы не можете вызвать функцию PHP внутри JQuery, потому что 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)); 
}); 

затем измените < PHP и> теги в конце страницы в < скрипт> и </скрипт> теги?. Он не будет работать точно, но вы должны уметь легко отлаживать его в своих инструментах браузера.

+0

Спасибо за ваше время и ваш ответ, я попробовал код, но он не работает. RExpenses просто не изменили номер. – RAABBIT

+0

Предполагая, что у вас в вопросе ваш последний код, вы не пробовали мой код. Вам не хватает "$" и parseInts. Я бы рекомендовал вам объявить каждую из переменных и проверить значения в ваших инструментах браузера. –

+0

Просто глядя на то, что у вас есть, вам также нужно избавиться от «= 0» в списке параметров функции fv, поскольку это остановит любой код javascript, запущенный на странице. –

0

Я думаю, вы вводите в заблуждение две концепции здесь. PHP работает на сервере, что означает, что когда вы вызываете эту функцию php, результатом является html-файл без какого-либо PHP-кода. Таким образом, вы не можете напрямую вызвать php-функцию в jquery, которая выполняется в сгенерированном 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)); 
}); 
}); 
+0

Большое вам спасибо, я попробовал код, на который вы ответили. Однако он по-прежнему не работает, так как вывод для rExpenses всегда равен 0,00 $. Я не знаю, где пошло не так. – RAABBIT

+0

Спасибо тоже. Спасибо за преобразование функции php в javascript, потому что я действительно не знаю, как конвертировать. спасибо – RAABBIT

Смежные вопросы