没有使用AJAX调用设置$ _POST

时间:2014-01-21 01:54:19

标签: php jquery ajax post

这应该是一个相当简单的电话,但我似乎无法使其发挥作用。基本上,我正在尝试将一组搜索参数传递给PHP脚本,但$ _POST即将出现空白。调用(通过jQuery)......

self.search = function () {
    var data = {
        'year': 2013,
        'month': 10,
        'day': 1
    };

    $.ajax({
        dataType: 'json',
        type: 'POST',
        url: 'repositories/blogposts.php',
        data: { 'search': data },
        success: function(results) {
            // populate knockout vm with results...
        }
    });
};

PHP代码等待传入的json对象......

if (isset($_POST['search'])) {
    echo find_blogposts(json_decode($_POST['search']));
}

我尝试了很多方法,但无论如何,print_r($_POST)给了我一个空数组。有什么遗漏?

2 个答案:

答案 0 :(得分:3)

PHP可能会阻塞您要发送的对象。

您应该直接发送数据对象:

data: data,

(在php中获取$_POST['year']等)

或将对象转换为可以在php端解码的json字符串:

data: { 'search': JSON.stringify(data) },

答案 1 :(得分:0)

find_blogposts()内发生了什么?

另外,您可以尝试.post()

$.post( "repositories/blogposts.php", { year: "2013", month:"10", day:"1" }, function( data ){
  // do something here
});

在你的php中,只收到$_POST['year'],这将是2013年。

希望它有所帮助。

这是api doc for .post()