即使AJAX POST请求以200 / ok回复,$ _POST数组也是空的?

时间:2014-08-15 00:15:28

标签: php jquery arrays ajax post

我已经查看了与我的问题相关的几个问题/答案组合,但我尝试过的建议尚未奏效。

这是我的AJAX请求:

$('#submitRequest').on('click', function() {
    // package everything to get it ready for transfer
    var textSamples = JSON.stringify(packTextStyles());
    var swatches = JSON.stringify(packSwatches());
    var clientInfo = JSON.stringify(packClientInfo());

    $.ajax ({
        type: 'post',
        url: 'classes/requestHandler.php',
        //headers: {'Content-Type': 'application/json'},
        data: {
            typeSamples: textSamples,
            swatchSamples: swatches,
            userInfo: clientInfo
        },
        success: function(data) {
            if (data === 'added') {
                alert('ok');
            }
            else {
                alert(data);
                return false;
            }
        }
    });
    return false;
});

三个变量textSamplesswatchesclientInfo都是数组。 textSamples数组包含八个对象,每个对象都有五个属性,因此它是一个很好的数据块。 我的问题是var_dump($_POST)返回一个空数组,尝试json_decode($_POST['typeSamples'])的任何尝试都给我一个PHP侧未定义索引的错误。

以下是Chrome开发工具中网络标签上标题的屏幕截图: Headers from POST

所以$ _POST正在获得一些东西,但我不知道它会去哪里。一些问题:

  1. 我是否需要将headers: {'Content-Type': 'application/x-www-form-urlencoded'}headers: {'Content-Type': 'application/json'}放入AJAX中,因为我使用了JSON.stringify()

  2. 因为我使用了AJAX,所以我没有将method="post" action="something.php"放在form标记和input标记中 没有name属性。 Submit按钮没有 type="submit"。那有关系吗?

  3. 编辑:如果重要,我使用的是jQuery 1.11.1和PHP 5.4.12

    EDIT2:半完成的PHP:

    <?php
    
    
    $reqGetter = new RequestReceiver;
    $reqGetter->checkInput();
    
    
    class RequestReceiver{
        // public function __construct() {
        //  $textSamples = json_decode($_POST['typeSamples']);
        // }
        public function checkInput() {
    
            if (!empty($_POST)) {
                echo('added');
                $typeSamples = json_decode($_POST['typeSamples'], true);
                print_r($typeSamples);
            } else {
                echo('failed');
            }
        }
    }
    

0 个答案:

没有答案