可能重复:
从javascript 调用php函数
我知道php是服务器端,JavaScript是客户端。但我想知道如何在调用JavaScript函数时运行PHP方法。下面是我的代码,我知道错误是什么,但我该如何执行php方法?
<script type="text/javascript">
function toggle()
{
var ele = document.getElementById("addCatTextBox");
var text = document.getElementById("addCatButtonText");
if(ele.style.display == "block") {
ele.style.display = "block";
text.innerHTML = "Save category";
<?php Category::addCategory($inCatName)?>
}
else {
ele.style.display = "none";
text.innerHTML = "Add new category";
}
}
</script>
谢谢你的帮助。
使用原型库(www.prototypejs.org):
Javascript:
<script type="text/javascript">
function toggle()
{
var ele = document.getElementById("addCatTextBox");
var text = document.getElementById("addCatButtonText");
if(ele.style.display == "block") {
ele.style.display = "block";
text.innerHTML = "Save category";
var options={
method: 'get',
parameters: 'inCatName='+ele.value,
onSuccess: function(xhr) {
// TODO: Whatever needs to happen on success
alert('it worked');
},
onFailure: function(xhr) {
// TODO: Whatever needs to happen on failure
alert('it failed');
}
};
new Ajax.Request('addCategory.php', options);
}
else {
ele.style.display = "none";
text.innerHTML = "Add new category";
}
}
</script>
addCategory.php:
<?php
$inCatName=isset($_REQUEST["inCatName"]) ? $_REQUEST["inCatName"] : null;
Category::addCategory($inCatName);
?>
其想法是,Javascript在后台向addCategory.php页面发送GET(也可以是POST)请求,向其传递创建类别所需的任何信息。
希望这足以让你继续前进。我的代码中缺少了很多内容——在将其放在数据库附近之前,您需要验证addCategory.php接收到的变量,并执行任何其他相关的安全检查。addCategory.php还需要任何include文件等,以便了解您的Category类。最后,addCategory.php应该真正将某种形式的变量返回给调用它的Javascript代码,以便它知道结果是什么。
您可以使用Ajax请求到触发PHP的端点,然后执行Category::addCategory($inCatName)
使用Jquery:
$.ajax({
url: "addCategory.php",
context: document.body,
success: function(){
// whatever you need to do
}
});
这可能会有所帮助。使用ajax调用php文件(示例中使用了categories.php)。发送一个名为"function"的参数,并将其设置为"addCategory"。在php文件中,编写代码以检测是否设置了$_GET['function'],以及是否将其设置为"addCategory"。如果是,请让代码调用函数。我还看到您试图将$inCatName参数传递给php函数。要发送此信息,只需将其添加到下面的url中即可。
<script type="text/javascript">
function toggle()
{
var ele = document.getElementById("addCatTextBox");
var text = document.getElementById("addCatButtonText");
if(ele.style.display == "block") {
ele.style.display = "block";
text.innerHTML = "Save category";
var xmlhttp;
if (window.XMLHttpRequest) {
xmlhttp=new XMLHttpRequest();
} else {
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET","categories.php?function=addCategory",true);
xmlhttp.send();
}
else {
ele.style.display = "none";
text.innerHTML = "Add new category";
}
}
</script>