【发布时间】:2012-07-06 04:08:14
【问题描述】:
假设我有以下数据:
var arr = [], arr1 = [], arr2 = [], arr3 = [], arr4 = [];
var a = 'something', b = 'else';
arr1['key1-1'] = 'value1-2';
arr1['key1-2'] = 'value1-2';
for (var i = 0; i < someCond; i++) {
arr = [];
arr['key2-1'] = 'value2-1';
arr['key2-2'] = 'value2-2';
arr2.push(arr);
}
现在我需要将它的漏洞传递给一个 php 脚本。
我将它打包成一个变量,如下所示:
var postVar = {
a: a,
b: b,
arr1: arr1,
arr2: arr2
};
我正在使用 jQuery,所以我尝试这样发布:
1)
//Works fine for a and b, not for the arrays
$.post('ajax.php', postVar, function(response){});
还有这个:
2)
var postVar = JSON.stringify(postVar);
$.post('ajax.php', {json: postVar}, function(response){});
用php文件
$req = json_decode(stripslashes($_POST['json']), true);
这也不起作用。
我应该如何构造/格式化我的数据以将其发送到 PHP?
谢谢
编辑:
情况1:
控制台.log(postVar);
PHP print_r($_POST) 响应:
大批
(
[a] => 某事
[b] => 其他
)
如你所见,php端没有数组(对象)。
案例 2:
当我添加以下内容时:
我明白了
{"a":"something","b":"else","arr1":[],"arr2":[[],[],[]]}
使用 console.log(postVar)
所以这似乎是这种情况下的问题......对吧?
【问题讨论】:
-
为什么要在此处放置斜杠?
-
您是否检查过 PHP 是否正在获取数据?即只需将
print_r($_POST)放入PHP 文件中。还要检查控制台是否有任何提示。 -
请检查你的服务器上是否正在运行magic_quotes,它会与json混淆
-
请注意,您的“数组”不是数组而是对象。 PHP 和 Javascript 在这个意义上是完全不同的。
arr1['key1-1']基本上是在您的数组对象上设置一个名为key1-1的属性。请详细说明“不起作用”。有错误吗?您如何尝试访问$req?还要检查浏览器开发人员工具中的网络选项卡。您需要知道发送到服务器的实际数据是什么。 -
不要在帖子中使用 HTML
标签,使用正常的 Markdown 格式。
标签: php javascript post