在通过ajax发送后,从模板文件中访问functions.php中的$ _POST数据

时间:2015-04-25 21:24:30

标签: php jquery ajax wordpress

我能够在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值。我想在templates.php之外的functions.php之外使用$ parent_cat。到目前为止,我尝试使用全局变量创建一个函数:

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(我之前从未使用过),因为我想要有两个下拉选项 - 一个包含父类别,另一个包含由所选父类别生成的子类别(可能没有刷新页面)。感谢。

2 个答案:

答案 0 :(得分:0)

按照步骤在模板文件中重新呈现数据。有两种方法来渲染数据,你可以实现相同的时间,但它对情况的影响。

  1. 您正在从管理面板发送ajax请求,并希望在前端显示
  2. 您正在发送前端的ajax请求,并希望在前端显示
  3. 如果您要从管理面板发送ajax请求并希望在这种情况下更新模板(前端),则首先必须在数据库中对数据进行处理。正如您所说,您现在通过functions.php文件访问数据,您必须update_option()将数据添加或更新到wordpress数据库。添加必须使用get_option()在模板中检查并获取它,但它只会从前端刷新页面刷新。

    现在情况二,您正在从前端发送数据并想要更新它。在这种情况下,请执行update_option()get_option()的第一步,并发送您希望在首页显示的functions.php的响应(仅在您用于发送请求的同一页面上) 。)并显示它。因此,如果您刷新页面,则相同的更新数据将在您的模板上进行更新。

    希望你明白我试图解释的内容。

答案 1 :(得分:0)

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

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