通过 ajax 在 post 之后获取关联数组
Get associative array after post via ajax
我需要向服务器发送一个表单和一个 array/string。
我的 Ajax 看起来像这样:
var formData = $("#formpv").serialize();
$.ajax({
type: 'POST',
url: 'scripts/formIntoDB.php',
data: formData,
通过这种方式,我可以像这样在 PHP 中检索表单数据:
$_POST['name'];
//Output "Foobar"
但是当我发送序列化的表单数据和另一个这样的参数时:
var formData = $("#formpv").serialize();
var posData = "TEST";
$.ajax({
type: 'POST',
url: 'scripts/formIntoDB.php',
data: {form: formData, pos: posData},
现在尝试在 PHP 中获取名称:
$_POST['form']['name'];
这只会抛出 PHP 解析错误:语法错误,意外的 '['
当我像这样发送数据时有什么不同:
{form: formData, pos: posData} 和
数据:表单数据 ?
问题是因为 formData
中的字符串变成了 double-wrapped,即。 key/value 对字符串中的 key/value 对字符串。由于只有顶层被反序列化,您的 PHP 代码无法以您想要的方式读取第二层。
要解决此问题,您需要手动 创建整个对象,例如:
$.ajax({
type: 'POST',
url: 'scripts/formIntoDB.php',
data: {
form: {
name: $('#yourNameInput').val(),
// all your other inputs here...
},
pos: posData
}
});
或者您可以保持请求数据不变,只需使用表单中的隐藏输入添加 pos
。
我需要向服务器发送一个表单和一个 array/string。
我的 Ajax 看起来像这样:
var formData = $("#formpv").serialize();
$.ajax({
type: 'POST',
url: 'scripts/formIntoDB.php',
data: formData,
通过这种方式,我可以像这样在 PHP 中检索表单数据:
$_POST['name'];
//Output "Foobar"
但是当我发送序列化的表单数据和另一个这样的参数时:
var formData = $("#formpv").serialize();
var posData = "TEST";
$.ajax({
type: 'POST',
url: 'scripts/formIntoDB.php',
data: {form: formData, pos: posData},
现在尝试在 PHP 中获取名称:
$_POST['form']['name'];
这只会抛出 PHP 解析错误:语法错误,意外的 '['
当我像这样发送数据时有什么不同: {form: formData, pos: posData} 和 数据:表单数据 ?
问题是因为 formData
中的字符串变成了 double-wrapped,即。 key/value 对字符串中的 key/value 对字符串。由于只有顶层被反序列化,您的 PHP 代码无法以您想要的方式读取第二层。
要解决此问题,您需要手动 创建整个对象,例如:
$.ajax({
type: 'POST',
url: 'scripts/formIntoDB.php',
data: {
form: {
name: $('#yourNameInput').val(),
// all your other inputs here...
},
pos: posData
}
});
或者您可以保持请求数据不变,只需使用表单中的隐藏输入添加 pos
。