POST未定义索引$ v3

时间:2019-10-14 08:59:54

标签: javascript php ajax wordpress

我在wordpress中使用ajax,我想展示用户输入的内容, 成功将ajax发送到服务器,但是POST数组出现问题 我的index.php中有一个不确定的索引,为什么它不起作用?

inc / send.php

<?php
    add_action( 'wp_ajax_applican', 'applican');
    add_action( 'wp_ajax_nopriv_applican', 'applican');
    function applican(){
        $v3 = $_POST['v3'];
    };
    ?>

/js/custom.js

let arr = [];
btnNext.on('click', () => {
    if(roomsRadio.is(':checked')) {
        calc.slick('slickNext');
        arr['version1'] = $('.rooms   input[type="radio"]:checked').val();
        console.log(arr['version1'])
    }
    if(versionRadio.is(':checked')) {
        calc.slick('slickNext');
        arr['version2'] = strip_html_tags($('.version   input[type="radio"]:checked').val());
        console.log(arr['version2'])
    }
    if(typeRadio.is(':checked')) {
        calc.slick('slickNext');
        arr['version3'] = strip_html_tags($('.type input[type="radio"]:checked').val());
        console.log(arr['version3'])
        $.ajax({
            type: "POST",
            dataType:'json',
            url: "/wp-admin/admin-ajax.php",
            data: {"action": "applican", "v3": arr['version3'], "v2": arr['version2'], "v1": arr['version1']},
            success: function(msg) {
                alert( "Data Saved: " + msg );
            },
            error: function () {
                console.log({"v3": arr['version3']});
            }
        })
    }

index.php

<?php applican(); echo $v3; ?>

1 个答案:

答案 0 :(得分:1)

就像Magnus所说的那样,PHP中的变量具有不同的作用域Variable scope,您不能超出范围。在您的代码中,只能在函数$v3中访问applican(),而不能访问index.php。您可以使用关键字global扩展变量的范围:

<?php # inc/send.php
    function applican(){
        global $v3;
        $v3 = $_POST['v3'];
    };

或其他解决方案,例如:

<?php # inc/send.php
    function applican(){
        return $_POST['v3'];
    };

<?php # index.php
    $v3 = applican(); echo $v3;