无法使用AJAX将JS变量传递给PHP

时间:2016-01-01 22:26:47

标签: javascript php jquery ajax wordpress

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

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

我几天来一直在尝试解决方案,但无法找到解决方案。请求一些指导

编辑: 根据收到的建议 我尝试了以下更改。我看到输入类型中的值=隐藏元素,但前提是我在Chrome中使用Inspect。但是使用View Source并没有向我显示这些值。我错过了什么?有人可以给一些指导..

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();
    }

}

单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") {

2 个答案:

答案 0 :(得分:0)

我不确定这些是否会对你有所帮助,但我有2个想法。首先,你可能会得到单选按钮的值false。其次可能你应该写这样的数据。

data: { "selRegProd" : selRegProd },

答案 1 :(得分:0)

在WordPress中使用Ajax通常以下列方式完成:

1-您必须将您的ajax数据提交给admin-ajax.php。有时您可以使用WordPress为该URL预定义的全局js变量> //Denotes input in dev console < //Denotes output > var a={}; < undefined > a > Object {} > a=a+1; < "[object Object]1" > a < "[object Object]1" > b=2 < 2 > a+b < "[object Object]12" 。但更可靠的是,我会使用ajaxurl的输出。

2-您的数据对象必须包含admin_url( 'admin-ajax.php' )值,该值具有表示此ajax提交的唯一字符串。我将在action

使用AJAX_ACTION

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

data = { action: 'AJAX_ACTION', your_var: 'your_val' };

4-使用您的add_action( 'wp_ajax_AJAX_ACTION', 'callback_function' ); add_action( 'wp_ajax_nopriv_AJAX_ACTION', 'callback_function' ); 接收数据:

callback_function

顺便说一句,在function callback_function() { // $_POST['your_var'] is accessible here } 中使用echo会导致响应被发送到success函数。

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

请检查:WordPress Codex