【发布时间】:2014-03-19 14:12:33
【问题描述】:
我正在尝试从 JS 向 PHP 发送一个数组。
JS:
var json = JSON.stringify(extraFields);
url += "&json="+json;
PHP:
$json = json_decode($_GET['json'], true);
foreach($json as $K=>$V){
echo "json".$K . "=" . $V ."; ";
}
假设extraFields 是这种格式的有效数组:
extraFields['key1'] = 'val1';
extraFields['key2'] = 'val2';
extraFields['key3'] = 'val3';
我得到的 PHP 错误是 invalid argument for Foreach
当我遍历 $_GET 值并回显它们时,PHP 会为 $_GET['json'] 显示空括号,因此它将其识别为 json..
我做错了什么?
回答 TJ 的评论
var extraFields = new Array();
var countFields = THIS.$_FIELDS.length;
var Row = new Array();
while(countFields--){
var name = THIS.$_FIELDS[countFields]['name'];
var id = THIS.$_FIELDS[countFields]['id'];
var elemVal = getElmVal(id);
extraFields[name] = elemVal;
window.alert(name +"="+ elemVal);
}
【问题讨论】:
-
从 JS 发送到 PHP 时检查 headers,当你使用
json_decode时,检查 json_decode 是否返回 null。如果是这样,echo json_last_error_msg();看看有什么问题。 -
你如何创建
extraFields?= {}?= []? -
@T.J.Crowder 查看我的编辑
-
@Adelphia:那是问题的一部分。您将它用作对象,而不是数组,并且非数组属性不会被序列化。请参阅我的回答中的第 2 项。
标签: javascript php json stringify