Javascript 通过ajax发送包含公式的变量,并将其返回到jquery
我正在尝试编写一个代码,我将能够通过ajax发送一个包含数学方程的变量,并使用php进行计算 我遇到的问题是,一旦php将变量返回给jquery,它就不会计算它,而是将它作为一个等式返回 我就是这样做的 jqueryJavascript 通过ajax发送包含公式的变量,并将其返回到jquery,javascript,php,jquery,Javascript,Php,Jquery,我正在尝试编写一个代码,我将能够通过ajax发送一个包含数学方程的变量,并使用php进行计算 我遇到的问题是,一旦php将变量返回给jquery,它就不会计算它,而是将它作为一个等式返回 我就是这样做的 jquery $(".equals").click(function(e){ e.preventDefault(); var firstnum= $("#firstnum").val(); var secnum= $("#secnum").val(); var operator= $('
$(".equals").click(function(e){
e.preventDefault();
var firstnum= $("#firstnum").val();
var secnum= $("#secnum").val();
var operator= $('#operator').val();
var compute = firstnum+operator+secnum;
content = {compute:compute}
$.ajax({
url:'compute.php',
type:'POST',
data:content,
success:function(response){
console.log(response);
}
});
});
php
例如,我的变量计算的内容是
10+10
php仍将按原样返回它
我想要发生的是,一旦它从php返回,它将作为
二十
有没有办法做到这一点
谢谢如果你想让PHP来计算它,你应该这样写。因为当您发送10+10时,PHP将其视为字符串 Javascript:
$(".equals").click(function(e){
e.preventDefault();
var firstnum= $("#firstnum").val();
var secnum= $("#secnum").val();
var operator= $('#operator').val();
content = {first_number:firstnum,second_number:secnum,operator:operator}
$.ajax({
url:'compute.php',
type:'POST',
data:content,
success:function(response){
console.log(response);
}
});
});
在PHP上:
<?php
$content = $_POST['content'];
if( '+' == $content['operator'] ){
echo $content['first_number'] + $content['second_number'];
}
else if( '-' == $content['operator']){
//extraction
}
// so on..
?>
您必须在PHP的服务器端有一个计算器脚本。 必须解析数学表达式。你可以用这样的东西 用于解析更复杂的表达式。
如果您必须处理更简单的数字,您可以指定一个运算符,并将这两个数字作为额外的POST变量 您需要通过PHP来实现这一点。现在发生的事情正是我对当前代码的预期。Scimonster的意思可能是,尽管他没有这么说,但您的PHP代码实际上对您的表达式没有任何作用。这仅仅是因为PHP接收它作为一个字符串,而不知道它的任何信息,然后输出相同的字符串。PHP在任何时候都不会被告知它必须对字符串做任何事情。。。所以它不…您当前的PHP代码完全符合预期。它返回未更改的输入字符串。您需要添加一些代码,使用接收到的公式实际执行计算,并将结果发送回。另外,避免盲目地评估从客户那里得到的信息。如果允许的话,恶意用户可以破坏您的站点。
<?php
$content = $_POST['content'];
if( '+' == $content['operator'] ){
echo $content['first_number'] + $content['second_number'];
}
else if( '-' == $content['operator']){
//extraction
}
// so on..
?>