前端主题选项AJAX返回0

时间:2017-08-22 作者:vimal kumar

您能帮我得到前端ajax返回的响应值为1吗。我已经更新了以下代码,现在返回的响应值为0

if (isset($_POST[\'frontliveeditor_settings\']) && isset($_POST[\'action\']) && $_POST[\'action\'] == "fnrlvedt_updateoption"){
    if (wp_verify_nonce($_POST[\'frontendlvedt\'],\'frnendlv_updateoptions\')){ 
        update_option(\'frontliveeditor_settings\', $_POST[\'frontliveeditor_settings\']);
    }
}

if(! function_exists( \'fend_clear_options\' )):  
    function fend_clear_options(&$fend_value) {
       $fend_value = htmlspecialchars(stripslashes( $fend_value ));
    }
endif;



if(! function_exists( \'fend_save_settings\' )):  
   function fend_save_settings ( $fend_data , $fend_rfresh = 0 ) {
       global $fend_arrayoptions;
       $fend_arrayoptions = array( \'frontliveeditor_settings\' );
       foreach( $fend_arrayoptions as $fend_option ){
           if( isset( $fend_data[$fend_option] )){
               array_walk_recursive( $fend_data[$fend_option] , \'fend_clear_options\');
               update_option( $fend_option ,  $fend_data[$fend_option] );
           }        
       }

       if( $fend_rfresh == 2 ) {    wp_die(\'2\');}
       elseif( $fend_rfresh == 1 ){ wp_die(\'1\');}
  }

endif;


/*--------------------------------------------------------------------------
---------*/
# Save Options
/*--------------------------------------------------------------------------
---------*/

add_action(\'wp_ajax_fnrlvedt_updateoption\', \'fnrlvedt_updateoption\');
add_action(\'wp_ajax_nopriv_fnrlvedt_updateoption\', \'fnrlvedt_updateoption\');

if(! function_exists( \'fnrlvedt_updateoption\' )):   
function fnrlvedt_updateoption() {

    check_ajax_referer(\'fend-theme-data\', \'security\');
    $fend_data = $_POST;

    $fend_rfresh = 1;

    fend_save_settings ($fend_data , $fend_rfresh );
}
endif;

<form id="frontlvedtr_saveoptions" class="frontlvedtr_hiddenitems" name="frontlvedtr_saveoptions" action="" method="post">  
<div class="frontlvedtr_hdltad1">   
enter your name : <input class="lt1hd1adcontnum" type="text" size="9" id="lveditlefthdad1" name="frontliveeditor_settings[lveditlefthdad1]" value="<?php echo intval(get_lveditoption(\'lveditlefthdad1\')); ?>" />
</div>

<input type="hidden" name="action" value="fnrlvedt_updateoption"/>
<input type="hidden" name="security" value="<?php echo wp_nonce_field(\'fend-theme-data\'); ?>" />
<input type="submit" name="frnendlv_updateoptions" value="Save" class="lvedtsubmtbtn"/>

</form>


jQuery(\'form#frontlvedtr_saveoptions\').submit(function() {

          var data = jQuery(this).serialize();

          jQuery.post(stchk.fedajaxurl, data, function(response) {
         alert(data);
         alert(response);
          if(response == 1) {

          jQuery(\'#savealert\').addClass(\'savedone\');
          t = setTimeout(\'fademessage()\', 3000);

          }
          else if( response == 2 ){

          location.reload();
          }

          else {
              return false;
          }

          });
          return false;
      });
提前谢谢。

1 个回复
SO网友:Roel Magdaleno

您正在为AJAX请求发送一个错误的操作,该操作应与下面的字符串匹配wp_ajax_:

add_action(\'wp_ajax_fend_theme_data_save\', \'fend_theme_data_save\');, 因此,您的操作HTML字段应如下所示:

<input type="hidden" name="action" value="fend_theme_data_save" />
看到区别了吗?您的操作值应始终位于wp_ajax_wp_ajax_nopriv, 不管你在用什么。我建议你阅读AJAX in Plugins.

此外,如果您使用check_ajax_referer(\'fend-theme-data\', \'security\'); 函数,您应该发送security jQuery数据中的参数及其各自的值,请阅读有关this function; 在这种情况下,将是这样的:

security=your-nonce-string.

your-nonce-string 意味着您需要创建一个名为fend-theme-data (与check\\u ajax\\u referer()函数进行比较的字符串)并使用wp_localize_script() 函数,了解更多信息this function, 和this one 创建nonce。

并且,不要使用die() PHP函数,使用wp_die()wp_send_json_successwp_send_json_error WordPress默认功能。

我希望我的回答能帮助你。:)

结束

相关推荐

通过admin-ajax.php提交表单返回0

正在尝试:使用管理ajax提交表单。php将post数据从“草稿”状态更新为“发布”状态,并为过滤器类型添加自定义元字段。表单内容:<form action=\"<?php echo admin_url( \'admin-ajax.php\' ) ?>\" method=\"post\"> <?php wp_nonce_field( \'submit_filter\', \'my_filter_nonce\' ); ?> &#x