JSON.parse 不适用于从 AJAX 调用返回的 JSON 字符串
JSON.parse not working with JSON string returned from an AJAX call
我有一段JavaScript,它通过ajax调用从后端获取数据。返回了一个 JSON 字符串,我无法弄清楚为什么 JSON.parse 不起作用。
这是我的代码
var success_get = (jQuery).ajax({
url: "<?php echo base_path(); ?>reservation/success_get",
method: "GET",
async: "true"
});
在Firefox中,我查看控制台,看到返回的JSON success_get是
{"Reservations":[{"Id":"415b68e9-1209-4ca9-9f6b-47116ced1769","ExtraDuration":0,"TotalDuration":1,"CreationTime":"2016-02-08T00:22:59+11:00","ExpiryTime":"2016-02-08T00:32:28+11:00","Sender":{"ReturnOption":"Dispose","ReturnAddress":null,"Id":"044bf5b5-95cd-44d1-a22a-8070b45a26ba","FirstName":"Test","LastName":"User","Email":"web@tz.net","Phone":"85112366"},"Recipient":{"Id":"b53ad6ac-9750-44c8-9bdd-581e89d3be93","FirstName":"Test","LastName":"User","Email":"test@test.com","Phone":"12345678"},"KioskCode":"Hm1","LockerSize":"Small","LockerNumber":"I5","Total":4.5}],"TotalAmount":4.5,"Sender":{"ReturnOption":"Dispose","ReturnAddress":null,"Id":"044bf5b5-95cd-44d1-a22a-8070b45a26ba","FirstName":"Test","LastName":"User","Email":"web@tz.net","Phone":"85112366"},"NumberOfHoursForDropOff":47}
据我所知,这看起来像有效的 JSON
然后我正在执行以下操作
success_get.done(function( success ) {
object_rsuccess = JSON.parse(success);
console.log(object_rsuccess);
});
在火狐中,我收到错误
ReferenceError: object_rsuccess is not defined
但是在控制台中.log我看到
Object { Reservations=[1], TotalAmount=4.5, Sender={...}, more...}
当我展开大括号中的部分时,我看到了我期望看到的数据。
我本以为我可以通过执行以下操作来查看变量,例如 TotalAmount
。var totalamount = object_rsuccess.TotalAmount;
但是当我收到未定义object_rsuccess的错误时,这将不起作用。
我错过了什么还是只是犯了一个愚蠢的错误?
将使用该object_rsuccess
的代码包装在一个函数中:
var theFunctionToBeCalled = function(obj){
var totalamount = obj.TotalAmount;
console.log(totalamount);
};
然后在.done()
中调用它:
success_get.done(function(success) {
var object_rsuccess = JSON.parse(success);
console.log(object_rsuccess);
theFunctionToBeCalled(object_rsuccess);
});
您的 AJAX 设置使函数异步,这意味着您的其余代码将继续执行,即使您全局定义object_rsuccess
,它也很可能在需要时无法使用。
除了我的建议之外,根据您感觉舒适的内容,您可以将使用object_rsuccess
的所有内容都放在.done()
中或将async:true
更改为async:false
。
相关文章:
- 将数据加载到使用JSON返回的表单字段时出现问题
- Javascript json返回未定义
- JSON返回数组的奇怪结果
- 如何使用 json 返回简单数据
- Json 返回每个函数
- 为什么它不将 JSON 返回到浏览器
- JQUERY JSON返回未定义
- 如何在视图中显示json返回的linq列表
- 解析JSON返回意外的标识符错误
- jquery json 返回添加两个数字的数据
- 如何在jsp中的javascript函数中从servlet获取json返回
- 在JSON返回值中循环
- 在.load jquery中使用JSON返回的页面url
- JSON 返回多个具有相同名称的值
- JSON 返回重复项
- JSON 返回未定义
- 映射 JSON 返回为 FullCalendar jQuery 库可用
- PHP 和 JSON:返回合适的格式
- 当 JSON 返回某个值时,更改 AJAX 中按钮的值
- 内线.当JSON返回“success”时,Ajax.request将成功:false