【问题标题】:How to convert PHP function to become called using Ajax [closed]如何使用 Ajax 将 PHP 函数转换为调用 [关闭]
【发布时间】:2020-06-30 19:16:08
【问题描述】:

编辑:我没有直接尝试使用 Javascript 调用 PHP 函数。应用程序路由将帮助前端实现正确的功能。

我认为我的问题可能有一个简单的解决方案,但我无法弄清楚。

我有一堆输出 HTML 的 PHP 函数。比如:

<?php
function sample1($param1)
{
   //make DB query and loop and print HTML
?>
 <div class='some-class'>
    Some dynamic output here...
 </div>
<?php
}
?>

就像我说的那样,有很多这样的功能。我想使用 Ajax 调用它们,以便可以返回它们的值,并且我可以使用 Javascript 打印它们/更新 DOM。我知道我可以更新所有函数,以便它们生成的 HTML 可以存储到一个字符串中,然后我可以每个字符串。但是有没有更简单、更清洁的解决方案来解决这个问题?

【问题讨论】:

  • 作为 Javascript 的 AJAX 不能通过它们的 PHP 名称调用函数,而 PHP 脚本的主体中没有某种条件逻辑来响应发送的参数。
  • 重复主题,请检查:stackoverflow.com/questions/39341901/…
  • @GetSet 这些已经使用内部框架路由器等处理。
  • 在你的问题中这么晚才提到内部框架有点晚了。哪个框架?
  • @GetSet 有什么关系?我说我的内部路由器调用该函数。我只想知道是否有办法处理它,如果调用是通过 AJAX 进行的,例如检查 HTTP_X_REQUESTED_WITH 值,那么如何使这些 PHP 函数返回值而不是回显。

标签: javascript php ajax


【解决方案1】:

因为您没有向我提供 javascript ajax 调用,所以我将专注于 php 方面。 我正在使用一个简单的 get Ajax 调用:

$.get( "https://someKindofLink.php?callFunction=Hallo&doctor=who", function( data ) {
  alert( data );
});

在 php 方面,我们需要检查该函数是否存在并使用 $_GET 中的所有变量运行它:

if (isset($_GET['callFunction'])) {

    if(function_exists($_GET['callFunction'])){
        echo $_GET['callFunction']($_GET);
        exit;
    }
}

function hallo($params)
{
    return "Goodbye".$params['doctor'];
}

出于安全原因,我不建议使用这种方法,但它应该可以完成工作。

【讨论】:

  • 一个非常巧妙的解决方案。但是 OP 的声明 The application routing will help frontend to hit the correct function. 可能不需要它。
  • 赞成,因为 OP 永远不会。反正不能。代表低。我同意您对安全问题的看法,但是您的解决方案确实代表服务器脚本说明了条件逻辑。
猜你喜欢
  • 1970-01-01
  • 2014-12-02
  • 2011-07-17
  • 2021-04-15
  • 1970-01-01
  • 2013-02-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多