【问题标题】:Accessing $_POST data in functions.php from a template file after it's been sent via ajax在通过 ajax 发送后,从模板文件访问 functions.php 中的 $_POST 数据
【发布时间】:2015-04-25 21:24:30
【问题描述】:

我能够在functions.php 中检索通过ajax 发送的数据。但我需要 template.php 中的数据(我的主题)。这是我第一次使用 ajax,也许我用错了方法。我可以回显 $_POST['myvar'];在functions.php中(我将在重新开始工作后发布代码)。假设设置正确,我可以访问 functions.php 之外的 ajax 数据吗?顺便说一句,我也是在 Stack 上注册的,所以如果没有遵循某些程序,我深表歉意。

已编辑

谢谢大家 - 这是一个示例代码。在我的 js 文件中:

$(window).load(function(){
      $("#cat").on("click",function() {


         var selectedCat = $(this).children("option").filter(":selected").text();

          $.get('../../../../../../wp-admin/admin-ajax.php', {

                action:  "parent_cat_send",

                parent_cat: selectedCat

             });

          });
    });

在functions.php中我有:

    add_action('wp_ajax_parent_cat_send', 'current_par_cat');
   add_action('wp_ajax_nopriv_parent_cat_send', 'current_par_cat');

   function current_par_cat() {
       global $parent_cat;

      $parent_cat = $_GET['parent_cat'];

      echo $parent_cat;

            wp_die();

   }

响应具有 $parent_cat 值。我想在functions.php之外使用$parent_cat,即在template.php中。到目前为止,我已经尝试使用全局变量创建一个函数:

function set_global_var($new_value)
{
    global $my_global_var;
    $my_global_var = $new_value;
}

并在 ajax 函数中调用它:

 set_global_var($parent_cat);

为了进一步解释我的目标,我试图从下拉列表中获取选定的值。该值是 wp_dropdown_categories 生成的父类别名称。得到它之后,我想然后得到那个父类别的子类别。我想到了 Ajax(我以前从未使用过),因为我想要两个下拉选项 - 一个带有父类别,另一个带有由所选父类别生成的子类别(可能不刷新页面) .谢谢。

【问题讨论】:

  • $_POST 是superglobal,这意味着您可以从任何地方访问它。没有看到您的代码很难提供帮助,请尽快发布。也读一读,下次stackoverflow.com/help/how-to-ask
  • 同意@rjdown 无法为您提供这些小信息。但我现在可以说的是,据我所知,你不能在你的主题文件中使用你的 ajax 代码,因为当你的 ajax 请求被解析时它们没有被加载。仅加载了 functions.php 文件,并且您应该只在此文件中包含所有业务逻辑。
  • 从标题中删除标签
  • 你只是想使用两个脚本之间的帖子吗?
  • 谢谢大家。 maksbd19 这是有道理的。我已经编辑了我的问题以显示我正在尝试做的事情。有什么想法吗?

标签: php jquery ajax wordpress


【解决方案1】:

按照步骤在您的模板文件中呈现您的数据。有两种方法可以渲染数据,您可以同时实施,但它取决于具体情况。

  1. 您正在从管理面板发送 ajax 请求并希望在前端显示
  2. 您正在向前端发送 ajax 请求并希望在前端显示

如果您从管理面板发送 ajax 请求并想在这种情况下更新模板(前端),首先您必须在数据库中存储您的数据。正如您所说,您现在通过 functions.php 文件访问数据,您必须 update_option() 将您的数据添加或更新到 wordpress 数据库。添加必须使用get_option() 在您的模板中检查并获取它,但它只会在从前端刷新页面时呈现。

现在情况二,您正在从前端发送数据并且还想更新它。在这种情况下,按照第一步到update_option()get_option() 并从functions.php 发送您希望在首页显示的响应(仅在您用来发送请求的同一页面上。)并显示它.因此,如果您刷新页面,那么相同的更新数据将在您的模板上呈现。

希望您理解我试图解释的内容。

【讨论】:

  • 谢谢。然而,我试图访问和使用 template.php 中的值而不刷新页面,并且可能不向数据库添加新值。我已经编辑了问题以包含我的目标,以防有更好的方法。
【解决方案2】:

maksbd19 给了我正确的答案,因为我无法访问 functions.php 之外的变量。不知道如何将响应标记为正确答案,但这里是:

"同意@rjdown 无法为您提供这些小信息。但我现在可以说的是,据我所知,您不能在主题文件中使用您的 ajax 代码,因为它们没有加载当你的 ajax 请求被解析时。只加载了 functions.php 文件,你应该只在这个文件中拥有你的所有业务逻辑。– maksbd19 Apr 26 at 3:28"

【讨论】:

    猜你喜欢
    • 2011-08-27
    • 2016-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-11
    • 1970-01-01
    • 2014-12-25
    相关资源
    最近更新 更多