【问题标题】:ajax to run PHP functionajax 运行 PHP 函数
【发布时间】:2017-05-26 18:27:20
【问题描述】:
$.ajax({ url: '/my/site',
     data: {action: 'test'},
     type: 'post',
     **success: function(output) {
                  alert(output);**
              }
});

当我使用上面的脚本时,它只显示了 innerHTML(of example.php)。我希望上面的代码运行我的 PHP 函数,该函数将重定向到另一个 php url (example.php)。我应该删除成功功能吗?或者有什么可能的解决办法?

【问题讨论】:

  • 您是否试图让 ajax 响应重定向浏览器?那是行不通的。例如stackoverflow.com/questions/2927044/…
  • @Joel_Blum 如果我正在尝试处理数据库查询?我相信它会起作用。只是希望我的假设是正确的。
  • ajax 调用不会重定向。您需要让 php 函数响应,并基于该响应在您的成功函数中有一个 js 位置
  • 你把不同的东西混合在一起。 Ajax 不会“运行脚本”或“调用 PHP 函数”或“重定向”——它只是向网络服务器发送请求,就像您在浏览器中键入 URL 时所做的那样。

标签: javascript php jquery ajax function


【解决方案1】:

这基本上就是 Ajax 所做的,为了简单起见,ajax 调用获取文件的内容。因此,如果您的 php 文件位于能够运行 php 的服务器中,则代码将被执行。但是只有您在页面上“显示”的内容才会被 ajax 调用检索,例如:

file1.php -> 没有显示任何内容,代码将运行,变量将获取值,但 ajax 调用将返回一个空字符串:

<?php $x=1; $y=$x+1; /* -> y: 2 */ ?>

file2.php -> 回显,代码将运行,变量将获取值,ajax 调用将返回一个仅包含显示内容的字符串:2

<?php $x=1; $y=$x+1; echo $y; ?>

file3.php -> php 之外的所有文本也将由 ajax 调用返回:y = 2

y = <?php $x=1; $y=$x+1; echo $y; ?>

如果要传递数据,通常会使用数据格式,例如 JSON。

这意味着 Ajax 不是为了重定向页面,而是执行外部代码或检索数据。至少您可以检索要重定向的新 URL,然后在 JS 中重定向,如果这是您想要的,但不能仅从您调用的 PHP 代码重定向。这是一个不同的页面。

【讨论】:

  • 谢谢。但我想要的是用 javascript 运行 php 函数。而已。如果js启动->触发php函数。不必传递任何数据。
  • 我找到了这个。函数 someFunction() { echo 'Answer'; } if ($_GET['do'] === "someFunction") { someFunction(); } 我相信它会刷新页面,这对我来说是最糟糕的事情。
  • 这取决于你想做什么,这个不清楚。如果您想根据用户输入重定向网页,则可以使用指向 URL 的简单链接或 javascript(查找 window.location)。如果要刷新页面的一部分,仍然需要 JS 来完成。您使用通过 Ajax 调用的页面构建页面,并检索结果。然后在返回时使用 JS 将其注入页面中。
  • 我应该补充一点:不要使用 Ajax 调用来传递函数代码,这是不确定的。首先,如果您不保护它,您调用的页面将“打开”以显示其结果。第二:任何人都可以看到 Ajax 调用发送或接收的内容。这很容易导致安全漏洞。
  • 绝对正确.. 要清楚,我应该使用什么来从客户端运行 php 函数? JSON?我可能不得不使用丑陋的方法,通过重新加载php文件(包括函数)来触发php函数。
【解决方案2】:

您可以在页面中单独回显您的 php 函数,并在成功时使用 ajax 打开该页面。

【讨论】:

  • 我没有看到这是一个 6 岁的问题.. 我的错
猜你喜欢
  • 2019-01-31
  • 1970-01-01
  • 1970-01-01
  • 2014-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多