当前位置: 首页 > 面试题库 >

从JavaScript到PHP的jQuery Ajax调用

蔺翰音
2023-03-14
问题内容

我使用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;">&nbsp;</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中。



 类似资料:
  • 问题内容: 有没有办法可以通过JS函数运行php函数? 像这样的东西: 我基本上想运行php函数,当我单击名为“ Test”的href时,它将调用php函数。 问题答案: 本质上,这就是AJAX的作用。页面加载,然后将事件添加到元素。当用户导致事件被触发时(例如,单击某些内容),您的Javascript使用XMLHttpRequest对象将请求发送到服务器。 服务器响应后(大概带有输出),另一个J

  • 问题内容: 如何从PHP调用JavaScript函数? 以下代码来自 xyz.html (单击按钮时),它在外部 xyz.js中 调用a 。这将调用wait.php。 和 wait.php 从那里以同样的方式从另一个PHP文件调用代码。 该否则工作正常,但它不会被调用我想要的方式。 问题答案: 就PHP而言(或者实际上,通常是一个Web服务器),HTML页面只不过是一个大字符串而已。 您可以使用P

  • 问题内容: 我需要对同一域的安全(HTTPS)URL进行异步调用。 当前,该页面正在使用常规HTTP(非安全)。 换句话说:这是使用HTTPS在同一域中调用URL。 在将此调用切换到HTTPS之前,我结束了实现服务器端代理以允许跨域AJAX调用,但是现在我面临着相同的源策略,因为HTTP和HTTPS也被认为是不同的源。因此,该代理不可用。 简介:在这种情况下,如何进行跨域,异步POST请求? 各种

  • 问题内容: 我有一个通过jQuery AJAX调用的PHP脚本。我希望PHP脚本将JSON格式的数据返回给javascript。这是PHP脚本中的伪代码: 基本上,我需要将两个for循环的结果插入$ json中。 问题答案: Php具有内置的JSON序列化功能。 json_encode *如果可以并且不会遭受“此处未发明”综合症, *请 使用它。

  • 我试图使用一个代码,将数据从一个mySQL数据库绑定到一个变量的数据,把所有产生的$x到一个PHP数组,最后将其转换为JSON格式。然后,我将JSON转换为javascript来处理来自数据库的数据。 请查看我的代码: 我的问题是,为什么页面将其显示为输出,而不将数据传输到阵列 "准备("SELECT x从数据")) { $stmt-

  • 问题内容: 我有一个通过jQuery AJAX调用的PHP脚本。我希望PHP脚本将JSON格式的数据返回给javascript。这是PHP脚本中的伪代码: 基本上,我需要将两个for循环的结果插入$ json中。 问题答案: Php具有内置的JSON序列化功能。 json_encode *如果可以并且不会遭受“此处未发明”综合症, *请 使用它。