JSON中的Ajax POST请求不起作用

时间:2015-03-09 21:43:24

标签: ajax http post request

我尝试从ajax向PHP发送HTTP POST请求,但是我有一个语法错误,我不明白.. 有没有人可以帮助我?

的index.php

            var key = "keytest";

            $.ajax({                                      
                url: 'requests.php',       
                type: 'post',
                contentType: 'application/json',
                dataType: 'json',
                data: '{"uniqueKey" : '+key+'}',
                success:function( rep ) {
                    $('#content').html(rep.content);
                },
                error:function(a,b,err){
                    console.log(err);
                }
            });   

requests.php

header('Content-type: application/json');

$uniqueKey = filter_input(INPUT_POST, 'uniqueKey');
$key = "newKey";
$retour = array('key' => $key);
echo json_encode($retour); 

1 个答案:

答案 0 :(得分:0)

不要手动构建JSON,请使用JSON.stringify

data: JSON.stringify({uniqueKey: key}),

当请求正文为JSON时,Php不会填充$_POST(INPUT_POST),仅适用于application/x-www-form-urlencodedmultipart/form-data
要获得json,您必须从php://input

中阅读
$json = file_get_contents('php://input');
$obj = json_decode($json);
$uniqueKey = $obj->uniqueKey;

此外,您的代码仅响应key值,但ajax请求需要content值。您应该将dataType更改为文本,以查看是否恢复了您的期望。

        $.ajax({                                      
            url: 'requests.php',       
            type: 'post',
            contentType: 'application/json',
            dataType: 'text',
            data: JSON.stringify({uniqueKey: key}),
            success:function( rep ) {
                $('#content').html(rep);
            },
            error:function(a,b,err){
                console.log(err);
            }
        });