1

我已经搜索了将近一个小时,但没有找到合适的示例来解决我的问题:我想调用一个 PHP 函数(它是一个简单的取消链接,它与在页面加载时执行的 javascript 函数给出的路径相链接)。我一点也不擅长 AJAX,我想了解如何从 javascript 代码中直接调用 index.php 文件中包含的 PHP 函数。

这是我的 javascript 代码片段中的内容:

var xmlhttp;

if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET","/dev/templates/absolu/index.php?s=" + Math.random(),true);
//@unlink(listeImages[i].toString());
4

3 回答 3

5

您发送函数名称(以防您将来有更多函数)和参数作为 get params

var fileToDelete;
var xmlhttp;

    if (window.XMLHttpRequest)
    {// code for IE7+, Firefox, Chrome, Opera, Safari
      xmlhttp=new XMLHttpRequest();
    }
    else
    {// code for IE6, IE5
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp.open("GET","/dev/templates/absolu/index.php?s=" + Math.random()+"&action=delete&file="+fileToDelete,true);

在您的 PHP 脚本上,您应该处理它:

<?php
if (isset($_GET['action'])){
  switch($_GET['action']){  
     case 'delete':
       @unlink(listeImages[$_GET['action']].toString());
     break;
     //Other functions you may call
  }
  exit;
}
//The rest of your index.php code
?>
于 2012-06-26T13:59:02.140 回答
3

您不能直接从 ajax 调用中调用 php 函数,它只会调用 php 脚本,就像您从浏览器打开页面 index.php 一样。

您必须在 php 脚本中添加测试才能知道必须调用哪个函数,例如。:

如果您在 ajax 中调用页面 /dev/templates/absolu/index.php?mode=delete_image&image=filename.png

<?php
if($_GET['mode'] == "delete_image") {
    unlink($_GET['image']);
}
?>

请注意任何人都可以调用此页面,因此您必须检查将删除的内容并验证您在 GET 参数中收到的内容。在这里我可以调用/dev/templates/absolu/index.php?mode=delete_image&image=index.php删除 php 脚本页面。

于 2012-06-26T13:57:39.200 回答
0

使用 jquery (http://jquery.com/) 你可以这样调用:

$(document).ready(function() {
  $.get("/dev/templates/absolu/index.php?", {
    'action': 'delete',
    'other': 'get-parameters',
    'r': Math.random()
  });
});

服务器端示例:

<?php

switch( $_GET['action'] ) {
  case 'delete': 
    // call unlink here
  break;
  case 'dosomething':
    // else
  break;
  default: 
    // Invalid request
  break;
}

请注意,删除文件应负责任地处理(执行安全检查),以确保不会意外或故意删除错误文件。

于 2012-06-26T13:55:15.997 回答