繁体   English   中英

无法使用AJAX将JS变量获取到PHP

[英]Not able to get JS variable to PHP using AJAX

我在wordpress网站(PHP)中有一个要求,在该网站上,选择一个下拉菜单时,将显示两个单选按钮,并且根据选择的单选按钮,将提供一个选择下拉列表。

我到达了使单选按钮可用的阶段。 我使用jQuery ON事件来标识选中了哪个单选按钮,并在javascript变量中具有相应的值。 我正在尝试使用ajax将这个JS变量传递给我的php。 ajax的成功属性可以正常工作,但$ _POST ['name']不显示该值。 我试图在ajax的成功属性内使用.html(),但这只是将div元素替换为javascript变量的值。 我在PHP代码中需要此JS变量值,以便可以运行一个条件,根据该条件可以确定需要在网站上显示的下拉列表。

几天以来我一直在尝试解决方案,但找不到解决方案。 要求指导

编辑:根据收到的建议,我尝试了以下更改。 只有在Chrome中使用Inspect时,我才能在输入type = hidden元素中看到该值。 但是,使用“查看源”并不会显示这些值。我缺少什么? 有人可以给点指导吗。

Ajx-script.js

$.ajax({
  type : "POST",
  url : myAjaxData.ajaxurl,
  data : {
  action : "sProdOrRegion_ajax_action",
  selectedProdReg : selectedProdReg                     
  },
  success : function(data) {
   $("#radioValueHidd1").val(selectedProdReg);                  
   // $('#stakeholderParentData').load( urlValue + " " +"#stakeholderData");
   //$("input[id=radioValueHidd3][value="+ selectedProdReg +"]").html();
   $("input[id=radioValueHidd2]").val(selectedProdReg);
 }
});

functions.php

add_action('wp_enqueue_scripts', function() {
wp_enqueue_script('my-ajax', get_template_directory_uri() . '/library/js/ajx-script.js', array('jquery') );
wp_localize_script(
'my-ajax',
'myAjaxData',
array( 'ajaxurl' => admin_url('admin-ajax.php') )
);
});

add_action( 'wp_ajax_singleIdeaProdOrRegion_ajax_action', 'callback_singleIdeaProdOrRegion' );
add_action('wp_ajax_singleIdeaProdOrRegion_ajax_action', 'callback_singleIdeaProdOrRegion');

function callback_singleIdeaProdOrRegion() {
    if(isset($_POST['selectedProdReg'])) {
        $selectedProdReg =  $_POST['selectedProdReg'];
        $selectedProdReg1 =  $_POST['selectedProdReg'];
        die();
    }

}

single-car.php

<div id="stakeholderParentData" class="stakeholderParentData">
                                <div id="stakeholderData" class="stakeholderData">
                                <?php $selectedProdReg = $wpdb->escape($_POST['selectedProdReg']); ?>



                            <?php


                                if (isset ( $selProdReg )) {
                                    if ($selProdReg === "custom_post_prod_company") {

我不确定这些方法是否对您有帮助,但是我有两个想法。 首先是您可能将单选按钮的值设置为false。 其次,也许您应该这样写数据。

data: { "selRegProd" : selRegProd },

在WordPress中使用Ajax通常是通过以下方式完成的:

1-您必须将ajax数据提交到admin-ajax.php。 有时,您可以使用WordPress为该URL预定义的全局js变量ajaxurl 但是更可靠的是,我将使用admin_url( 'admin-ajax.php' )

2-您的数据对象必须包含一个具有唯一字符串的action值,以表示此ajax提交。 我将在此处使用AJAX_ACTIONdata = { action: 'AJAX_ACTION', your_var: 'your_val' };

3-通过使用包含指定的操作名称的挂钩接收数据:

add_action( 'wp_ajax_AJAX_ACTION', 'callback_function' );
add_action( 'wp_ajax_nopriv_AJAX_ACTION', 'callback_function' ); 

4-使用您的callback_function接收数据:

function callback_function() {
    // $_POST['your_var'] is accessible here
}

顺便说一句,在callback_function内部使用echo将导致响应发送到成功函数。

wp_ajax_nopriv_AJAX_ACTION适用于没有WordPress帐户或未登录的访问者的提交,而wp_ajax_AJAX_ACTION适用于已登录的用户。

请检查: WordPress Codex

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM