【发布时间】:2021-12-01 22:49:48
【问题描述】:
我试图了解如何从 onChange 状态的下拉列表中传递值。对此的最佳做法是什么?这是我到目前为止所得到的。似乎无法正常工作,没有错误。我不能让我的 if/else 语句触发,所以不确定如何检查正在捕获的变量。
不确定我是否走在正确的轨道上 - 这里的最佳做法是什么?
表格:
<select id="dropdown_shop_order_language" name="wcml_shop_order_language">
<option value="nl" selected="selected">Niederländisch</option>
<option value="en">Englisch</option>
<option value="de">Deutsch</option>
</select>
到目前为止我的脚本:
jQuery(document).ready(function () {
jQuery('#dropdown_shop_order_language').change(function () {
jQuery.ajax(
{
dataType: 'json',
type: "post",
url: myAjax.ajaxurl,
data: {
action: 'my_action',
"dropdown_shop_order_language": jQuery('#dropdown_shop_order_language').val()
},
success: function(data){
console.log(data);
}
});
});
});
功能:
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 );
wp_localize_script( 'lang_script', 'myAjax', array( 'ajaxurl' => admin_url('admin-ajax.php') ) );
}
}
}
add_action( 'admin_enqueue_scripts', 'my_enque_action', 10, 1 );
function my_action( ) {
$dropdown_shop_order_language = $_POST['dropdown_shop_order_language'];
echo $dropdown_shop_order_language;
if ( $dropdown_shop_order_language == 'en' ) {
} elseif ( $dropdown_shop_order_language == 'nl' ) {
} elseif ( $dropdown_shop_order_language == 'de' ) {
} else {
}
echo json_encode(['responsekey' => 'responsevalue']);
wp_die();
}
add_action( 'wp_ajax_my_action', 'my_action' );
add_action( 'wp_ajax_nopriv_my_action', 'my_action' );
【问题讨论】:
-
alert("language is nl");那是你有问题的地方 -
@MasivuyeCokile 我已经根据下面的 cmets 更新了代码,并将警报更改为 echo,但仍然出现相同的错误。
-
如果代码已经更新,您仍然在函数 my_action() {.. 中有警报,并且您仍然没有在函数末尾调用 wp_die/exit