我正在尝试传递一个javascript变量,当我点击一个按钮到php然后运行一个mysql查询时我得到它。我的代码:
function ajaxCall(nodeID) {
$.ajax({
type: "POST",
url: "tree.php",
data: {activeNodeID : nodeID},
success: function(data) {
alert("Success!");
}
}
);
}
function onButtonClick(e, data) {
switch (data.name) {
case "add":
break;
case "edit":
break;
case "delete":
nodeid = data.context.id;
ajaxCall(nodeid);
//query
break;
}
}
<?php
if (isset($_POST['activeNodeID'])) {
$nodeid = $_POST['activeNodeID'];
}
else {
$nodeid = 0;
}
?>
我之前没有这样做,所以我不确定为什么这不起作用。有什么建议? 编辑:也许我没有充分解释自己。我意识到php是服务器端,javascript是客户端。我有一个组织结构图,使用javascript显示基于所有信息保存在我的数据库中。我需要做的是:当点击其中一个javascript按钮(编辑,删除,添加)时,获取活动节点的ID并将其用作php中的变量来运行查询。例如,删除db中的行。最好的方法是什么?
答案 0 :(得分:3)
这里有一点混乱,success
值存储了一个在Ajax调用成功时调用的回调。举个简单的例子,假设你有一个像这样的Ajax调用:
function ajaxCall(nodeID) {
$.ajax({
type: "POST",
url: "tree.php",
data: {activeNodeID : nodeID},
success: function(data) {
console.log(data.my_message);
}
});
这会调用名为tree.php
的PHP页面。在此页面中,您执行一些计算,然后返回一个值,在本例中为JSON。所以页面看起来像这样(注意我保持简单,你应该总是验证输入值):
$v = $_REQUEST['activeNodeID'];
$to_return = "the value sent is: " . $v;
return json_encode(array('my_message' => $to_return));
这个简单的PHP页面将该字符串作为JSON返回。在您的javascript中,在指定的回调(即success
)中,您将data
作为包含PHP的$to_return
值的对象。你写的内容并没有多大意义,因为PHP是一种服务器语言,不能像JavaScript一样从浏览器中处理。