通过admin-ajax.php阅读帖子

时间:2019-02-19 作者:Morgan Janjua Crane

我正在尝试读取通过ajax调用(admin ajax.php)提交的表单POST值。这篇文章已经准备好并提交了。以下是我在子主题中的服务器端操作挂钩functions.php

add_action(\'save_post\', \'address_save_postdata\',1,1);
add_action( \'wp_ajax_wilcity_handle_review_listing\',
 \'address_save_postdata\' );
add_action( \'wp_ajax_wilcity_handle_review_listing\', \'address_save_postdata\' );

Wordpress Post Request

下面是我如何尝试在回调函数下读取表单post值:

     if ( esc_attr($_POST[\'action\']) == "wilcity_handle_review_listing")  {
     $lat_val = esc_attr($_POST[\'data[tmbu_location][group][tmbu_lat]\']);
             $lng_val = esc_attr($_POST[\'data[tmbu_location][group][tmbu_lng]\']) ;
          $address_val = esc_attr($_POST[\'data[tmbu_location][group][tmbu_address]\']) ;
          $cityname_val = esc_attr($_POST[\'data[tmbu_location][group][tmbu_cityname]\']) ;  }
     else  
 {
         $lat_val = esc_attr($_POST[\'tmbu_lat\']);
         $lng_val = esc_attr($_POST[\'tmbu_lng\']) ;  $address_val = esc_attr($_POST[\'tmbu_address\']) ;  $cityname_val =
     esc_attr($_POST[\'tmbu_cityname\']) ;
  }

         update_post_meta($post_id, \'_tmbu_lat\', $lat_val);   
         update_post_meta($post_id, \'_tmbu_lng\', $lng_val);  update_post_meta($post_id, \'_tmbu_address\', $address_val); 
     update_post_meta($post_id, \'_tmbu_cityname\', $cityname_val);

1 个回复
最合适的回答,由SO网友:Krzysiek Dróżdż 整理而成

好的,所以你的代码有很多问题。。。但我很确定我知道,最重要的是。。。

但首先要做的事。。。

使用以下代码添加AJAX回调:

add_action( \'wp_ajax_wilcity_handle_review_listing\', \'address_save_postdata\' );
add_action( \'wp_ajax_wilcity_handle_review_listing\', \'address_save_postdata\' );
将同一个函数添加两次是没有意义的。这可能是个错误,但也许你忘了添加nopriv 到第二行。

回到主要问题

POST请求中发送了一些数组,您正试图这样访问它们:

$_POST[\'data[tmbu_location][group][tmbu_lng]\']
这行不通。\'data[tmbu_location][group][tmbu_lng] 不是字符串键。这是一个有三个键的数组。这意味着,您应该像这样访问它:

$_POST[\'data\'][\'tmbu_location\'][\'group\'][\'tmbu_lng\']
还有一件事。你把esc_attr 代码中的任何地方。但恐怕这没什么意义。esc_attr 是一个对HTML属性进行转义的函数。您不会在代码中的任何地方打印任何html属性。在比较字符串或将其保存到DB之前,您不必转义字符串,在大多数情况下,您不应该这样做。

相关推荐

Gantry4中的GravityForms不会显示

在将表单插入页面之前,在Gantry4模板中实现GravityForms效果良好。表单(包括条件)不会显示在页面的公共视图中。经过7个小时的研究,问题似乎来自主题(甘特瑞4),因为将其更改为另一个主题确实会显示表单,但GravityForms的支持团队没有给出任何直接的解决方案,他们宁愿建议更改主题。尝试将主题更改为Gantry5似乎需要几天的时间,而且无法确定问题是否会得到解决(因为问题可能是由于使用了mootools),而且由于控制台上没有出现错误,几乎不可能找到真正的原因。使用控制台进行一些测试,这