我将以下信息发送到php文件。数据包含“一个”和“两个”。 'One'包含序列化表单,两个包含类似的自定义信息。我怎样才能用php读取这些帖子的值。我希望能够区分包含在一个中的值和包含在两个中的值。
$('form').submit(function() {
x = $(this).serialize(),
test = 'testing=whatever&something=else';
$.ajax({
type: 'POST',
data: {'one':x, 'two':test}
...
})
})
我怎样才能以我能做的方式读取php中的值
$one = $_POST['one'];
foreach($one as $key=>$value){ $message.= $key.": ".$value."\r\n"; }
答案 0 :(得分:1)
您需要取消submit
$('form').submit(function(e) {
e.preventDefault();
x = $(this).serialize();
test = 'testing=whatever&something=else';
$.ajax({
type: 'POST',
data: {one:x, two:test}
...
})
})
在php端
$one = $_POST['one'];
$two = $_POST['two'];
<强>更新强>
我不是精通PHP,但我认为以下应该工作
$one = $_POST['one'];
$two = $_POST['two'];
$cols = explode("&", $one);
foreach($cols as $col) {
$key_values = explode("=", $col);
$key = urldecode($key_values[0]);
$values = urldecode(key_values[1]);
}
echo $key, $values;
答案 1 :(得分:1)
我不确定你想用表格(x)的序列化版本做什么,但你可以按照惯例使用$ _POST访问接收PHP脚本中的两个变量,然后可能使用parse_str( http://au.php.net/manual/en/function.parse-str.php)打破'测试'到各种参数,但我质疑为什么你采取这条路线而不是打破参数并将它们作为单独的参数传递给data参数:
data: {'testing' : whatever, 'something' : else}
答案 2 :(得分:0)
如果您的表单包含复选框或radioboxes(具有相同名称的输入),请使用$(this).serializeArray()而不是$(this).serialize()来区分它们
答案 3 :(得分:0)
您需要先将表单数据转换为JSON!不是serialize的查询字符串,为了看到This,JSON可以让你有嵌套键的能力。
然后,您可以将单独的数据放在JSON中的不同键中,如:
var myData =
{
'one': $('form').serializeObject(),
'two': 'testing=whatever&something=else',
};
$('form').submit(function() {
$.ajax({
type: 'POST',
data: myData,
...
});
});
在PHP方面,您可以使用您想要的方式轻松获取它:
$one = $_POST['one']
foreach($one as $key=>$value) { $message.= $key.": ".$value."\r\n"; }