2010-11-13 80 views
5

我想知道是否有可能在javascript中调用php函数,仅当条件为真时才会调用该函数。例如在Javascript中调用PHP函数

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

有没有这样做的手段..如果是这样告诉我。谢谢

+2

[Javascript和PHP函数]的可能重复(http://stackoverflow.com/questions/221396/javascript-and-php-functions) – 2010-11-13 14:33:00

回答

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> 

准系统的Javascript替代

<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> 
+0

我真的不得不推荐Ajax的jQuery库。它只是让事情变得简单和无忧。 – 2010-11-13 14:37:56

+0

当然,不过每个新手都需要先从头开始,因此我使用准系统javascript – Philar 2010-11-13 14:40:05

+0

感谢您的帮助。还有一件事可以让我看到一个简单的jQuery.ajax示例。我想知道它的基本实现。 – 2010-11-13 14:42:19

2

不,这是不可能的。 PHP代码运行之前(服务器端)的JavaScript(客户端)

4

PHP是服务器端和Javascript是客户端,这样不是真的(是的,我知道有一些服务器端JS)。你可以做的就是使用Ajax并调用PHP页面来获得一些结果。

+1

这里是一篇关于如何使用jQuery获取和运行Ajax的文章http:// articles.sitepoint.com/article/ajax-jquery – Treffynnon 2010-11-13 14:31:45

+0

哇,我说完全相同的几分钟后你:) – 2010-11-13 14:33:07

1

其他的答案是不是正确的。

但是,有一个库XAJAX,它可以帮助模拟使用AJAX和特别设计的PHP库从JavaScript调用PHP函数的行为。

这有点复杂,学会在jQuery中使用$ .get和$ .post会容易得多,因为它们设计得更好,更简单,一旦你了解它们的工作方式,没有必要直接从JavaScript调用PHP。

0

PHP总是在页面加载之前运行。 JavaScript总是在页面加载后运行。他们从不串联。

最接近的解决方案是使用AJAX或浏览器重定向从服务器调用另一个.php文件。