js $ .post问题

时间:2017-05-11 10:57:34

标签: javascript php jquery ajax

我有以下js代码

$('document').ready(function () {
    $('#filterSub').click(function (evt) {
        var data = $('form').serialize();
        var gender = $('#gender').html();

        $.post('data.php', {
            data,
            gender: gender
        }, function (resultp) {
            $('#List').html(resultp);
        });
        $.post('filter.php', {
            data,
            gender: gender
        }, function (result) {
            $('.addFilter').html(result);
        });
        //              alert(gender);

        //return false;
    });
});

我正在使用

parse_str($_POST['data'],$_POST);

哪种方法非常好,我得到了表单变量。

然而,我正试图获得变量'性别'在我的PHP脚本中

 $_POST['gender'] 
PHP中的

。但它没有得到任何东西。 (在脚本中设置警告,以便性别'弹出正确的值)

另外,有什么办法可以将一个命令中的帖子查询发送到不同的文件吗?发送的数据是相同的。

我对JS不好,所以我觉得我在$ .post请求格式中犯了一个基本错误。

任何帮助都将受到赞赏,因为我已经花了整整一天时间没有取得任何成功。

1 个答案:

答案 0 :(得分:3)

问题是parse_str($_POST['data'], $_POST);$_POST数组替换为解析data参数的结果 - 数组中的任何现有条目都将丢失。所以你失去了$_POST['gender']

您可以将其解析为不同的数组:

parse_str($_POST['data'], $data);

或者您可以在致电gender之前将parse_str()参数提取到变量中。

$gender = $_POST['gender'];
parse_str($_POST['data'], $data);

另一种选择是完全删除data参数,只需将序列化字段作为单独的参数发布。

    var data = $('form').serialize();
    var gender = $('#gender').html();
    var params = data + '&gender=' + encodeURIComponent(gender);
    $.post('data.php', params, function (resultp) {
        $('#List').html(resultp);
    });