我想知道是否可以在javascript中调用php函数,仅在条件为真时才调用。例如
<script type="text/javascript">
if (foo==bar)
{
phpFunction(); call the php function
}
</script>
有没有办法做到这一点..如果是这样,请告诉我。感谢
答案 0 :(得分:4)
PHP是服务器端,Javascript是客户端所以不是真的(是的,我知道有一些服务器端JS)。你可以做的是使用Ajax并调用PHP页面来获得一些结果。
答案 1 :(得分:2)
不,这是不可能的。 PHP代码在 之前运行 (服务器端)javascript(客户端)
答案 2 :(得分:2)
无法以您上面说明的方式调用PHP函数。但是,您可以使用AJAX调用PHP脚本,代码如下所示。您还可以找到一个简单的示例here。如果您需要进一步澄清,请告诉我
使用Jquery
<script type="text/javascript" src="./jquery-1.4.2.js"></script>
<script type="text/javascript">
function compute() {
var params="session=123";
$.post('myphpscript.php',params,function(data){
alert(data);//for testing if data is being fetched
var myObject = eval('(' + data + ')');
document.getElementById("result").value=myObject(addend_1,addend_2);
});
}
</script>
Barebones Javascript Alternative
<script type="text/javascript">
function compute() {
var params="session=123"
var xmlHttp;
var addend_1=document.getElementById("par_1").value;
var addend_2=document.getElementById("par_2").value;
try
{
xmlHttp = new XMLHttpRequest();
}
catch (e)
{
try
{
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
try
{
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e)
{
alert("No Ajax for YOU!");
return false;
}
}
}
xmlHttp.onreadystatechange = function()
{
if (xmlHttp.readyState == 4) {
ret_value=xmlHttp.responseText;
var myObject = eval('(' + ret_value + ')');
document.getElementById("result").value=myObject(addend_1,addend_2);
}
}
xmlHttp.open("POST", "http://yoururl/getjs.php", true);
xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlHttp.setRequestHeader("Content-length", params.length);
xmlHttp.setRequestHeader("Connection", "close");
xmlHttp.send(params);
}
</script>
答案 3 :(得分:1)
其他答案是对的。
但是,有一个库XAJAX,它有助于模拟使用AJAX和特别设计的PHP库从JavaScript调用PHP函数的行为。
这有点复杂,学习在jQuery中使用$ .get和$ .post要容易得多,因为它们设计得更好,更简单,一旦你了解它们的工作方式,你就赢了“感觉需要直接从JavaScript调用PHP。
答案 4 :(得分:0)
PHP总是在页面加载之前运行。 JavaScript总是在页面加载后运行。他们从不同时奔跑。
最接近的解决方案是使用AJAX或浏览器重定向从服务器调用另一个.php文件。