在AJAX不起作用的情况下从SELECT表单传递值

时间:2021-10-14 作者:user2059370

我试图从一个选定的表单中传递一个变量,但无法使其工作-正确的方法是什么?

控制台现在给我对象错误:statusText: "parsererror"

Update:

更改了json\\u编码并更新了脚本。我知道获取correct值,但if/else语句没有触发。

Form

<select id="dropdown_shop_order_language" name="wcml_shop_order_language">                  
<option value="nl">Nederlands</option>
<option value="en" selected="selected">Engels</option>
<option value="de">Duits</option>
</select>

Javascript

jQuery(document).ready(function($) {
 
   jQuery(\'#dropdown_shop_order_language\').on(\'change\', function(){

      $.ajax({
        dataType: \'json\', 
        type: "POST",
        url: ajaxurl,
          data: {
              \'action\':\'my_action\',            
               \'dropdown_shop_order_language\': $(\'#dropdown_shop_order_language\').val() 
 
          },
          success:function(data) {      
            console.log(data);
          },
          error: function(errorThrown){
              console.log(errorThrown);
          }
      });
    });
});

PHP

function my_enque_action( $hook ) {
global $post;
     $postid = $post->ID; 
    if ( $hook == \'post-new.php\' || $hook == \'post.php\' ) {    
        
        if( get_post_type( $postid ) === \'shop_order\' ) {  
         wp_enqueue_script( \'lang_script\', get_template_directory_uri() . \'/assets/javascripts/language.js\', array( \'jquery\' ), \'1.0.0\', true );

        }
    }
}
add_action( \'admin_enqueue_scripts\', \'my_enque_action\', 10, 1 );

function my_action( ) {
 $dropdown_shop_order_language = $_POST[\'dropdown_shop_order_language\'];
        
        if ( $dropdown_shop_order_language == \'nl\' ) {

        } elseif ( $dropdown_shop_order_language == \'de\' ) {
    
        } elseif ( $dropdown_shop_order_language == \'en\' ) {
        
        }    
 
 echo json_encode($dropdown_shop_order_language);
   wp_die();
}
add_action(\'wp_ajax_my_action\', \'my_action\');
add_action(\'wp_ajax_nopriv_my_action\', \'my_action\');

1 个回复
SO网友:Buttered_Toast

您似乎缺少ajax操作,有两个,一个用于登录用户,另一个用于未登录用户
按照您的操作,您需要添加以下操作。

// this one for logged in users
add_action(\'wp_ajax_my_action\', \'my_action\');

// this one for not logged in users
add_action(\'wp_ajax_nopriv_my_action\', \'my_action\');

相关推荐

使用AJAX时未保存自定义分类

我正在使用ajax使用自定义分类法创建一个自定义表单来保存CPT,所有内容都保存得很好,但自定义分类法没有我试着用我的代码只使用php和分类法保存CPT,没有任何问题我使用的选择是<select name="cat-servicios" class="cat-servicios"> <option disabled value="">Seleciona una categoría</option>