据我所知,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>
感谢您的帮助。
答案 0 :(得分:2)
使用Prototype库(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还需要任何包含文件等,以便它知道你的Category类。最后,addCategory.php应该真正将某种形式的变量返回给调用它的Javascript代码,以便它知道结果是什么。
答案 1 :(得分:0)
您可以对触发PHP的端点使用Ajax请求,然后执行Category::addCategory($inCatName)
使用Jquery:
$.ajax({
url: "addCategory.php",
context: document.body,
success: function(){
// whatever you need to do
}
});
答案 2 :(得分:0)
这可能会有所帮助。使用ajax来调用php文件(在示例中使用了categories.php)。发送一个名为“function”的参数并将其设置为“addCategory”。在你的php文件中编写代码来检测是否设置了$ _GET ['function']并检测它是否设置为“addCategory”。如果是,请让代码调用该函数。我还看到你试图将$ inCatName参数传递给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";
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>