【发布时间】:2013-11-29 02:25:42
【问题描述】:
我正在尝试通过 jQuery.ajax 将 JavaScript 数组发送到 PHP 页面,但发送的数组仅包含空白值。
如果我在 Chrome 上打开 F12 控制台并检查 JS 对象,它就在那里。都满了。但是当我使用 ChromePhp 工具记录 PHP 变量时,它只显示空白值(另外,如果我遍历 php 数组,回显它的值,我会得到所有空白)。
我在这里很困惑。
这是我的示例代码:
<?php
include 'ChromePhp.php';
if (isset($_GET['newUsers'])) {
$newUsers = $_GET['newUsers'];
ChromePhp::log($newUsers);
} else { ?>
<html>
<body>
<script src="js/jquery-2.0.3.min.js"></script>
<script type="text/javascript">
var newUsers = [];
newUser = [];
newUser['nome'] = 'alvaro';
newUser['idade'] = '34';
newUsers.push(newUser);
newUser1 = [];
newUser1['nome'] = 'bia';
newUser1['idade'] = '7';
newUsers.push(newUser1);
newUser2 = [];
newUser2['nome'] = 'alice';
newUser2['idade'] = '2';
newUsers.push(newUser2);
$.ajax({
url: "testcookie.php",
type: "GET",
data: {
'newUsers[]': newUsers
}
});
</script>
</body>
</html>
<?php } ?>
更新基于第一个 cmets。现在我可以传递对象,但不知道如何读取它的属性。已经尝试 $user['nome'] 没有结果。
<?php
include 'ChromePhp.php';
if (isset($_POST['newUsers'])) {
$newUsers = $_POST['newUsers'];
foreach ($newUsers as $user) {
# code...
# HOW DO I READ THE nome AND idade VALUES HERE?
}
} else { ?>
<html>
<body>
<script src="js/jquery-2.0.3.min.js"></script>
<script type="text/javascript">
//var newUsersObj = {};
var newUsers = [];
newUser = {};
newUser['nome'] = 'alvaro';
newUser['idade'] = '34';
newUsers.push(newUser);
newUser1 = {};
newUser1['nome'] = 'bia';
newUser1['idade'] = '7';
newUsers.push(newUser1);
newUser2 = {};
newUser2['nome'] = 'alice';
newUser2['idade'] = '2';
newUsers.push(newUser2);
$.ajax({
url: "testcookie.php",
type: "POST",
data: {
'newUsers[]': newUsers
},
success: function () {
},
error: function () {
}
});
</script>
</body>
</html>
<?php } ?>
【问题讨论】:
-
你尝试过使用 JSON.stringify(newUsers); ?
-
你所有的
newUser对象都应该用{}初始化,因为它们是不是数组 -
成功了,@Phil!我只需要弄清楚如何在 PHP 上读取 JavaScript 对象。 :)
-
读取php上的JS对象
-
另外,如果您将数据发送到服务器(而不是请求它),最好使用 POST。 REST
标签: javascript php json jquery