WordPress - AJAX调用返回0

时间:2013-06-06 21:52:07

标签: wordpress jquery

我正在开发一个WordPress插件,一切正常。唯一的问题是,我在jQuery中对php文件中的某些代码进行了ajax调用。它工作,但它只是一个文件中的几个PHP命令。这在WP中是不好的做法,一切都应该在函数中,并使用钩子附加。

这是output.php中的代码

if(isset($_POST['test']) && $_POST['test'] == 'ON'){
    if(isset($_POST['id'])){
        $productId  = intval(preg_replace('/[^0-9]+/', "", $_POST['id']));
        if ($productId > 1){
            $results = get_option( 'test_options' );
            $result = $results[$productId];
            unset($results);
            echo json_encode($result);
            die();
        }
    }
}

这是jQuery脚本中的AJAX调用

$.ajax({
        type: "POST",
        url: "output.php",
        data: {
            'test'  : "ON",
            'id'    : productId
        }, 
        success: function(results) {
            result = $.parseJSON(results);
            createArray(result);
        }
    });

这很好用。但是当我将output.php中的代码更改为一个函数并使用这样的动作钩子时:

function getInfo(){
    $test   = $_POST['test']);
    $id = $_POST['id']);

    if(isset($test) && ($test == "ON")){
        $result = '';
        if(isset($id)){
            if ($id > 1){
                $results = get_option( 'test_options' );
                $result = $results[$id];
                echo json_encode($result);
                die();
            }
        }
    }
}


add_action('wp_ajax_getInfo','getInfo');
add_action('wp_ajax_nopriv_getInfo','getInfo');

并将jQuery脚本更改为:

$.ajax({
        url: my_ajax_script.ajaxurl,
        type: 'POST',
        data: {
            action  : 'getInfo',
            test    : "ON",
            id  : productId
        }, 
        cache: false,
        success: function(results) {
            result = $.parseJSON(results);
            console.log(result);
            alert("succes");
            createArray(result);
        }
    });

它不起作用。我错过了什么?我已经检查了很多关于stackoverflow的问题,描述了同样的问题,检查了解决方案,但找不到我出错的地方。

1 个答案:

答案 0 :(得分:0)

一旦我将output.php文件的代码添加到保存AJAX网址的wp_localize_script()命令的文件中,它终于开始工作了。

对于前端使用AJAX调用,您需要使用此命令来使AJAX可用。在管理区域中,默认情况下可以使用AJAX。