我正在尝试将数组从GET请求转换为Javascript中的实际对象。
这是我试图转换的数组的一个例子。
array(21) {
[0]=>
array(3) {
["id"]=>
int(15508)
["name"]=>
string(9) "Some name"
["API_key"]=>
string(19) "Some key"
}
[1]=>
array(3) {
["id"]=>
int(19695)
["name"]=>
string(12) "Some name"
["API_key"]=>
string(19) "Some key"
}
[2]=>
array(3) {
["id"]=>
int(19627)
["name"]=>
string(13) "Some name"
["API_key"]=>
string(19) "Some key"
}
该数组是从PHP中的Web服务服务器生成的。
我试过这样做:
var result = xmlHttp.responseText;
var string = JSON.stringify(result);
var json = JSON.parse(string);
这将返回相同的数组,但是当我尝试访问数组中的某些项时,例如在for循环中:json[i]
返回一个字母,就好像数组是一个字符串一样。
我控制了服务器,这是php文件中处理数组返回的代码:
header("Content-Type: application/json");
var_dump($result);
使用gettype($result)
返回'array'。
修改
我能够让PHP以JSON格式返回数组:
[
[
{
"id": 15508,
"name": "Some name",
"API_key": "Some key"
},
{
"id": 19695,
"name": "Some name",
"API_key": "Some key"
},
{
"id": 19627,
"name": "Some name",
"API_key": "Some key"
{
]
]
我对此有点新意,我真的很感激任何帮助。
答案 0 :(得分:0)
尝试PHP
$json = json_encode($_GET);
print_r($json);
在JS中
var result = xmlHttp.responseText;
var json = JSON.parse(result);
答案 1 :(得分:0)
更新!我这样解决了
通过使用this回答中的代码,我能够在PHP中创建JSON,结果证明,我的数组没有正确编码。
$arr[] = $result;
function utf8ize($d) {
if (is_array($d)) {
foreach ($d as $k => $v) {
$d[$k] = utf8ize($v);
}
} else if (is_string ($d)) {
return utf8_encode($d);
}
return $d;
然后使用echo json_encode(utf8ize($data));
将数组返回给JSON。要在JavaScript中将其转换为JSON,我在这里使用了另一个answer来寻求帮助:
var result = xmlHttp.responseText;
var json = JSON.parse(result);
谢谢!