【发布时间】:2016-11-12 03:01:52
【问题描述】:
我对 JS 编程非常熟悉,所以这可能是一个愚蠢的问题,但经过数小时的搜索,我还没有从网上找到可行的解决方案。
我有多个 JSON 提要。服务器为每个 url 提供一个多层 JSON 记录,如下所示(数据是虚构的测试数据):
-
{ "LGICUS01OperationResponse": { "ca": { "ca_phone_mobile": "07799 123456", "ca_request_id": "01ICUS", "ca_return_code": 0, "ca_dob": "11.07.1950", "ca_last_name": "Pandy", "ca_num_policies": 0, "ca_phone_home": "01962 811234", "ca_email_address": "A.Pandy@beebhouse.com", "ca_house_name": "", "ca_policy_data": "", "ca_customer_num": 1, "ca_first_name": "Andrew", "ca_house_num": "34", "ca_postcode": "PI101OO" } } } -
{ "LGICUS01OperationResponse": { "ca": { "ca_phone_mobile": "123", "ca_request_id": "01ICUS", "ca_return_code": 0, "ca_dob": "30.09.1965", "ca_last_name": "Tracey", "ca_num_policies": 0, "ca_phone_home": "", "ca_email_address": "REFROOM@TBHOLDINGS.COM", "ca_house_name": "Tracey Island", "ca_policy_data": "", "ca_customer_num": 2, "ca_first_name": "Scott", "ca_house_num": "", "ca_postcode": "TB14TV" } } }
等等。现在我已经设法使用 ajax 读取 JSON 记录,但是在 getCurrentJson 函数之外传递该信息数组时遇到了严重的问题。最佳情况是前两个参数将被省略,这样会有一个用户信息数组供以后以“标准方式”进行操作,如下所示:
{
"rows":[
{"ca_customer_num":1", "ca_first_name:"Andrew",...}
{"ca_customer_num":2", "ca_first_name:"Scott",...}
...
]
}
代码如下:
<!DOCTYPE html>
<html>
<head>
<title>JSON test</title>
<script src="jquery.js" type="text/javascript"></script>
<script>
var myjson = [];
for (i = 1; i < 11; i++) {
getCurrentJson(i);
console.log(myjson[i].LGICUS01OperationResponse.ca.ca_phone_mobile);
}
function getCurrentJson(current){
$.ajax({
dataType: "json",
url: "http://192.49.208.193:9081/ci/c/"+current,
success: function(data){
myjson[current] = data;
console.log(myjson[current]);
console.log(myjson[current].LGICUS01OperationResponse.ca.ca_phone_mobile);
}
});
}
</script>
</head>
<body>
</body>
</html>
现在 ajax 函数中的 console.log 输出可以打印对象信息和“ca_phone_mobile”号码,但是 for 循环中的第一个控制台输出显示:“未捕获的类型错误:无法读取未定义的属性 'LGICUS01OperationResponse'(…) ”。我需要一些 toString 数据类型转换或类似的吗?我也尝试将 myjson 数组传递给 getCurrentJson 函数,但没有成功。
【问题讨论】:
-
$.ajax进行异步调用。这就是为什么你的 for 循环中的console.log没有显示预期的结果,异步请求尚未完成。
标签: javascript arrays json ajax