【发布时间】:2010-11-13 14:26:26
【问题描述】:
我想知道是否可以在 javascript 中调用 php 函数,仅当且仅当条件为真时。例如
<script type="text/javascript">
if (foo==bar)
{
phpFunction(); call the php function
}
</script>
有没有办法做到这一点。如果有,请告诉我。谢谢
【问题讨论】:
标签: php javascript ajax
我想知道是否可以在 javascript 中调用 php 函数,仅当且仅当条件为真时。例如
<script type="text/javascript">
if (foo==bar)
{
phpFunction(); call the php function
}
</script>
有没有办法做到这一点。如果有,请告诉我。谢谢
【问题讨论】:
标签: php javascript ajax
PHP 是服务器端,Javascript 是客户端,所以不是真的(是的,我知道有一些服务器端 JS)。您可以做的是使用 Ajax 并调用 PHP 页面以获取一些结果。
【讨论】:
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>
【讨论】:
不,那是不可能的。 PHP 代码运行之前(服务器端)javascript(客户端)
【讨论】:
其他答案是对的。
但是,有一个库 XAJAX,它使用 AJAX 和一个特别设计的 PHP 库来帮助模拟从 JavaScript 调用 PHP 函数的行为。
这有点复杂,学习在 jQuery 中使用 $.get 和 $.post 会容易得多,因为它们设计得更好且更简单,一旦你了解它们的工作原理,你就赢了'感觉不需要直接从 JavaScript 调用 PHP。
【讨论】:
PHP 总是在页面加载之前运行。 JavaScript 总是在页面加载后运行。他们从不串联。
最接近的解决方案是使用 AJAX 或浏览器重定向从服务器调用另一个 .php 文件。
【讨论】: