在Javascript中调用PHP函数

时间:2010-11-13 14:26:27

标签: php javascript ajax

我想知道是否可以在javascript中调用php函数,仅在条件为真时才调用。例如

<script type="text/javascript">
if (foo==bar)
{
phpFunction(); call the php function
}
</script>

有没有办法做到这一点..如果是这样,请告诉我。感谢

5 个答案:

答案 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文件。