【发布时间】:2010-03-03 21:32:39
【问题描述】:
我正在尝试通过jquery.ajax() 将 JavaScript 对象传递给 PHP 脚本,基本上:
var bigArray = new Object();
//Dode
//Start loop
bigArray[x] = {name: exname, id: exID, order:e, set: setBox, inc: incBox, example: exampleBox, day: i};
所以它几乎是这些对象的数组。
var anotherTest = $.toJSON(bigArray);
var ajxFile = "routineajax.php";
$.ajax({
type: 'POST',
processData: false,
url: ajxFile,
data: anotherTest,
success: function(data) {
$('#result').html(data);
alert('Load was performed.');
}
});
});
PHP 端脚本
print_r($_POST);
$params = json_decode($_POST);
print_r($params)
Ajax 调用正在进行,我可以在 Firebug 中看到,但 print_r($_POST) 返回一个空数组。如果我在 $.ajax 函数和 PHP 脚本中将它更改为 $_GET ,它就可以工作。我的主要问题是收到此错误消息:
警告:json_decode() 期望参数 1 是字符串,数组中给出
我该如何解决这个问题?
将这个 sn-p 添加到 PHP 文件后
$data = file_get_contents('php://input');
var_dump($data);
var_dump(json_decode($data));
我得到这个输出
string'{"0"{"name":"Decline`Abs","id":"54","order":0,"set":"","inc":"","example":"","day":1}}' (length=87)`
object(stdClass)[2]
public '0' =>
object(stdClass)[4]
public 'name' => string 'Decline Abs' (length=11)
public 'id' => string '54' (length=2)
public 'order' => int 0
public 'set' => string '' (length=0)
public 'inc' => string '' (length=0)
public 'example' => string '' (length=0)
public 'day' => int 1
所以至少它正在通过,但我不确定如何访问它,这是朝着正确方向迈出的一步!
【问题讨论】:
-
你能用 print_r($_GET) 的结果编辑你的问题吗?我看到你在下面有它,但我不清楚。