ajax post调用后$ _POST为空

时间:2014-07-25 10:48:13

标签: javascript php wordpress post

所以我使用这个ajax帖子的目的是在wordpress循环中使用一些JS变量,所以我可以根据ajax帖子中的变量调用自定义循环。

以下是ajax电话。

$('.collection-more').click(function() {
    $.ajax({
        type: 'post',
        url: 'http://tmet.dev/wp-content/themes/muban-trust/single-collection.php',
        data: { "test" : "hello" },
        success: function( data ) {
            console.log( data );
        }
    });
})

目前我正在发送硬编码数据。

在我的single-collection.php页面中:

    <?php 
    print_r($_POST);


    if(isset($POST['filters[Artist]']))
    {
        $filters_obj = $_POST['filters[Artist]'];
        $filters_array = json_decode($filters_obj, TRUE);

        for($i = 0; $i < sizeof($filters_array); $i++)
        {
            echo '<p>h'.$obj->name.'</p>';
        }
    }
?>

我正在使用print_r来调试问题,目前它返回:

阵列()

问题是我无法在single-collection.php中访问名为“test”的Json对象

如何访问它?

提前致谢!

编辑:firebug的屏幕截图 enter image description here

2 个答案:

答案 0 :(得分:1)

从ajax到php: 这是传统方式

var payload = {
      smth1: "name",
      smth2: "age"
    };

然后调用ajax

$.ajax({
            url: "somephp.php",
            type: 'POST',
            data: payload,
            dataType: 'json',
            crossDomain: true
            })

从phpPost到javascript:

正确获取帖子参数:

$fields = $_POST['fields'];
$usernameGiven = $fields['smth1'];
$passwordGiven = $fields['smth2'];

将smthn返回给javascript时

$result = array(
             "something" => "something",
             "something2" => $something2

         );

         echo json_encode($result);

答案 1 :(得分:0)

使用$_POST['test']访问test参数。您的print_r()表示已正确填写。

您的PHP代码正在访问$_POST['filters[Artist]'],但Javascript中没有此类参数。如果你通过:

data: { 'filters[Artist]': somevalue }

您可以在PHP中以$_POST['filters']['Artist']访问它。