не может получить глобальные переменные php, используя ajax

if(!isset($_GET['t'])){$table = 'notes'}
else{$table = $_GET['t'];}

$cats = $table . '_cats'

include 'test.php'

test.php

test(); // works fine

if(isset($_POST['fn'])){
    $_POST['fn']();
}

function test(){
    global $cats, $table;
    echo $cats;
    echo $table;
}

JS

$(document).on('click', '.atitle', function(){
    $.post('test.php', {fn: 'test'}, function(data){
        console.log(data); // empty
    });
});

Я ожидаю, что в консоли написано $cats и $table

Любая помощь?

Всего 1 ответ


Поскольку ваше первое имя файла a_notes.php тогда вызовите a_notes.php из ajax. Вы определяете $cats, $table в a_notes.php не в test.php .

$(document).on('click', '.atitle', function(){
    $.post('a_notes.php', {fn: 'test'}, function(data){
        console.log(data);
    },'json');// set dataType as json
});

Также в test.php , так как вы вызываете функцию test() тогда echo возвращает значение функции.

echo test();

if(isset($_POST['fn'])){
    $_POST['fn']();
}

function test(){
    global $cats, $table;
    return json_encode(["cats"=>$cats,"table"=>$table]);
}

Есть идеи?

10000