从jquery ajax请求接收$ _POST变量

时间:2013-07-29 18:55:21

标签: php jquery ajax post

我正在制作一个类似

的ajax请求
 var object = JSON.stringify(object);
// var url = "http://"+baseURL +"/"+endpoint;

$.ajax({
    contentType: "application/json",
    dataType: 'json',
    type:type,
    data:object,
    url:endpoint,
    success:function(data){
        if (typeof callback == "function"){
            alert(data);
        }
    },

    error: function (xhr, textStatus, errorThrown) {
        console.log(xhr.statusText);
        console.log(xhr.responseText);
        console.log(xhr.status);
        console.log(errorThrown);
    }
});

其中var=object是字符串化的json对象,当它进入ajax请求时。在php方面,我试图通过

来捕获变量
<?php
   echo ($_POST['object']);
   exit;
?>

我的成功回调函数将数据警告为“null”。我做错了什么?

谢谢, 亚历

1 个答案:

答案 0 :(得分:1)

跳过json.stringify,你不希望数据作为帖子体中的json文本。要填充帖子数组,需要将其作为application/x-www-form-urlencoded发送。要在jquery中执行此操作,只需将data属性设置为对象而不是字符串。

// remove this.... var object = JSON.stringify(object);
// var url = "http://"+baseURL +"/"+endpoint;

$.ajax({
    dataType: 'json',
    type:"POST",  // <--- Should be post
    data:object,
    url:endpoint,
    success:function(data){
        if (typeof callback == "function"){
            alert(data);
        }
    },

    error: function (xhr, textStatus, errorThrown) {
        console.log(xhr.statusText);
        console.log(xhr.responseText);
        console.log(xhr.status);
        console.log(errorThrown);
    }
});

当前发送数据时可以获取数据,但是你必须在PHP方面做更多的工作。

$_POST = json_decode(file_get_contents("php://input"),true);