我使用jquery ajax从javascript调用php的代码似乎存在问题。Ajax调用似乎成功了,但是我没有从php函数返回正确的信息。
在php函数中,我创建一个SQL查询。在执行删除查询之前,我将查询发回作为调试的响应。这是显示查询的div的HTML。
<div id="thenode" style="position: absolute; top: 30px; left: 0px; width: 150px; background-color: white; z-index: 9999;"> </div>
这是jquery ajax调用。有两个变量发送给PHP函数:用于删除节点的nodeid和用于该函数的option delete。
function deleteitem() { //get selected node var selectnod = getCookie('pnodid'); //define php info and make ajax call $.ajax({ url: "uptree.php", type: "POST", data: { node: selectnod, option: "delete" }, cache: false, success: function (response) { $('#thenode').html(response); } }); }
这是PHP函数。
<?php function uptree() { $node = $_POST['node']; $option = $_POST['option']; if($node == '' || $option == '') { return ''; } $dbco = mysql_connect('localhost', 'root', 'mmowebdb'); if (!$dbco) { die('Could not connect: ' . mysql_error()); } mysql_select_db("pagelinks", $dbco); $sql = "DELETE FROM dtree_table WHERE nid='$node'"; return $sql; } ?>
应该简单明了,但是此ajax调用返回一个空字符串,并使HTML中的div消失。这是我第一次在实际项目中使用ajax。对于知道ajax真正作用的人来说,这个问题必须很容易找到。你能说出问题吗?
我找到了答案!感谢所有对SQL调用有建议的人。但是,这是我的问题的实际答案。
将ajax Javascript进行PHP调用需要四个步骤。前两个步骤发生在Javascript中。其他两个步骤发生在PHP中。
步骤1.在Javascript中,确定PHP函数中需要哪些变量,然后检索它们。
第2步。对PHP函数进行ajax调用。jQuery具有将值传递给PHP的便捷方法。在ajax调用的数据项中,您有一个这样的名称/值对数组。
data: { node: selectnod, option: "delete" },
步骤3.在PHP文件中准备好您的PHP函数。这样编写函数。
function updatetree($node, $option) {
步骤4.在该PHP文件中回显对php函数的调用。
通过这四个步骤,您应该成功调用了PHP,并且能够从PHP函数将信息返回给javascript。
这是javascript函数。
function deleteitem() { //Get selected node to send to PHP function var selectnod = getCookie('pnodid'); //Define php info, specify name of PHP file NOT PHP function //Note that by loading the PHP file you will probably execute any code in that file //that does not require a function call //Send PHP variables in the data item, and make ajax call //On success perform any action that you want, such as load a div here called thenode $.ajax({ url: "uptree.php", type: "POST", data: { node: selectnod, option: "delete" }, cache: false, success: function (response) { $('#thenode').html(response); } }); }
这是PHP文件 uptree.PHP 。它具有定义的函数,称为 updatetree 。它还有一个echo语句来调用该函数。这似乎只是导致函数运行的方式。Ajax本身不会调用该函数。
<?php //Function defined here //The variables will come from the ajax data statement function updatetree($node, $option) { if($node == '' || $option == '') { return 'Select an item in the tree.'; } $dbco = mysql_connect('localhost', 'root', 'mmowebdb'); if (!$dbco) { die('Could not connect: ' . mysql_error()); } mysql_select_db("pagelinks", $dbco); $sql = ''; switch($option) { case 'delete': $sql = "DELETE FROM dtree_table WHERE nid='$node'"; break; case 'add': list($pagename, $address) = explode(",", $page); $pagename = trim($pagename); $address = trim($address); $sql = "INSERT INTO dtree_table (nid, pid, name, url) values (NULL, ".$node.", '".$pagename."', '".$address."')"; break; case 'update': break; } if (!empty($sql)) return $sql; } //echo statement to run function, variables sent by ajax are retrieved with $_REQUEST //they could have also been retrieved with $_GET or $_POST echo updatetree(trim($_REQUEST['node']),trim($_REQUEST['option']),trim($_REQUEST['page'])); ?>
因此,回顾一下。Javascript获取变量,对PHP文件进行Ajax调用。Ajax加载PHP文件,该文件包含使PHP函数运行的echo语句。该PHP函数在同一文件中定义。函数return语句通过ajax将信息发送回javascript。Javascript使用该信息执行某些操作,例如将其加载到HTML页面上的div中。