如何使用ajax将javascript变量传递给php

时间:2013-12-01 18:22:15

标签: javascript php ajax variables

我正在尝试传递一个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中的行。最好的方法是什么?

1 个答案:

答案 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一样从浏览器中处理。