我有以下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请求格式中犯了一个基本错误。
任何帮助都将受到赞赏,因为我已经花了整整一天时间没有取得任何成功。
答案 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);
});