jqueryajax使用php读取post值
我将以下信息发送到一个php文件。数据包含“一”和“二”一个包含序列化表单,两个包含类似的自定义信息。如何使用php读取这些post值。我希望能够区分1中包含的值和2中包含的值jqueryajax使用php读取post值,php,jquery,Php,Jquery,我将以下信息发送到一个php文件。数据包含“一”和“二”一个包含序列化表单,两个包含类似的自定义信息。如何使用php读取这些post值。我希望能够区分1中包含的值和2中包含的值 $('form').submit(function() { x = $(this).serialize(), test = 'testing=whatever&something=else'; $.ajax({ type: 'POST', data: {
$('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"; }
您需要取消
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;
我不确定您想对表单(x)的序列化版本做什么,但您可以像往常一样使用$\u POST访问接收PHP脚本中的两个变量,然后可能使用parse\u str()将“test”分解为各种参数,但我质疑,为什么您选择这条路线,而不是将参数分解并作为数据参数中的单个参数传递:
data: {'testing' : whatever, 'something' : else}
如果表单包含复选框或RadioBox(输入名称相同),请使用$(this).serializeArray()而不是$(this).serialize()来区分它们您需要首先将表单数据转换为JSON!不是序列化所做的查询字符串,因此,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"; }
谢谢,但是我如何才能在php中获得名称和值,这样我就可以执行类似于
foreach($key=>$value){$message.=$key.:“$value.\r\n”;}
这样的操作+1,但不是一个优雅的解决方案。parse_str是我一直在寻找的。我有一个拥有2个数组的目的。一个数组用作表单值,另一个数组用于其他目的。你的回答没有回答我的问题。parse_str没有为你从字符串中提取参数吗?谢谢alpaus,parse_str就是我要找的。它像预期的那样工作。我只是想知道,既然数据是一个查询字符串,我们是否需要对它进行url编码,以防它有特殊的字符或空格。我如何将我的serializeArray转换成JSON格式,它位于one
中,而我的其他值位于two
中,你不应该调用jQuery的serialize函数,而是从我在答案中给出的链接复制粘贴正确答案中的函数,然后使用:x=$(this).serializeObject();什么是序列化对象()。如果不按aplaus所示进行解析,我们无法获取这些值。@Pinkie它会将表单数据转换为JSON。您可以解析数组1,但不能解析数组2。如果仍然存在问题,请使用json_解码。